I built VoltJS to help people leave WordPress. So the first test is whether you can leave VoltJS just as easily.
The front page of this site says the rule covers me too, and that if one of my projects fails a test, this site should say so. This is the first time I've put one of them through all five. VoltJS is a small web framework I've been building as an alternative to WordPress, with a hosting service at host.voltjs.com. Its whole pitch is freedom: Leave WordPress. Own your site. A product that sells escape had better be easy to escape from, so I started there.
Test 1: Leaving is easy
A customer can export everything they put in, in a format another tool can read, without asking anyone.
Moving a site from WordPress to Volt has worked for a while. Going the other way didn't exist until this week. A Volt site is plain Markdown files, so you could always copy them out, but "you have the files" isn't the same as "another tool can read them." WordPress can't do anything with a folder of Markdown.
So we built the way back. The migration tool, @voltjscom/wp-volt, now has an export command (version 0.5.0, published October 29). It writes a standard WordPress export file, the same kind WordPress produces itself, which any WordPress site imports under Tools > Import. It carries pages and posts with their dates, categories, tags, excerpts and featured images, drafts stay drafts, media comes across as attachments, the menu comes across as a WordPress menu, and comments come back as real threaded comments. It reads only named public settings, so no passwords or keys leave with it, and a test checks that.
Then we measured it, because a claim isn't a test. We took a real WordPress test site, moved it to Volt, moved it back with WordPress's own importer, and compared the result against the original database:
- 0 of 53 pages and posts differ on type, address, title, date, categories, tags, comment count or featured image
- 0 import failures, 30 attachments, and 11 comments threaded 3 deep, as in the original
- 49 of 53 web addresses unchanged; the other 4 redirect, which the export report predicted
- all 28 images load from WordPress's own uploads folder
- WordPress's editor found 0 broken blocks out of 170
The round trip also caught 4 bugs before release, which is the reason to run it.
Hosted sites, updated the same evening. When I first published this, nobody had confirmed that a host.voltjs.com customer could download their site. Hours later I downloaded one: the whole site came back as an ordinary Volt project, with its pages, menu, images and the code to run it, plus a note saying nothing in it depends on Volt hosting. Its settings file held only the site's own settings. So a hosted customer can take everything and run it themselves, without asking anyone.
Into WordPress, measured. The note in that download also told you how to move to WordPress, and its command pointed WordPress at an image address that doesn't exist, because the live site serves its images from a different address under different file names. Following those printed steps would have brought the pages across and lost every image. The dashboard's "Export to WordPress" button doesn't have that problem, so I clicked it for the same site and we imported the file into a stock WordPress with its official importer. Nothing failed. The page, the menu and the image all arrived, WordPress downloaded the original image (the same size, byte for byte, as the one in the download) and stored its own copy, and no page still points back at Volt.
Where it still falls short. That production test was a small site: one page, one menu item and one image. The larger 53-item round trip with the button ran on a local copy of the hosting platform, not on the live service. The corrected download instructions are written but not live yet, and copies already downloaded keep the old text. So hosted Volt now passes this test with evidence, but thinner evidence than the self-hosted path has.
A few honest limits apply even to the self-hosted path. The Volt site has to stay online while WordPress downloads the images, and WordPress refuses to download from any port other than 80, 443 or 8080. Custom content types come back as pages unless you keep them on purpose. The logo, menu location, permalink settings and front page have to be set by hand afterwards, and the export report lists each one. None of that is unique to Volt. A WordPress export leaves out the theme, widgets and plugin settings too.
Test 2: Pricing is legible
The price page says what one unit costs and what a unit is.
The pricing page lists three options: Free at $0 for 3 sites and 1 GB of storage, Pro at $12 a month for 10 sites and 10 GB, and self-hosting free forever. You can see what you get and what it costs without talking to anyone. It's a plan price more than a unit price, so someone with 11 sites has to guess, but I'd call that a pass with a note.
Test 3: Privacy is the default
There's a public list of every piece of data the product collects, and why.
The privacy policy has that list: email, site content, billing status through Stripe, IP addresses, browser details, server logs, and a one-way device fingerprint used to enforce free-tier limits. It says there's no advertising and no third-party tracking, and spam is stopped with an invisible proof-of-work check, so visitors aren't handed to Google or Cloudflare. The fingerprint is the item a careful reader will question, and the policy does say what it's for. Pass, as written. I haven't audited the running service against the policy, so this grades the document.
Test 4: Accountability is independent
The party being judged doesn't hold sole control of the evidence it's judged by.
This case study is the evidence, and I control it. The measurements came from my own tools, run by me, reported on my own site. The export file format is WordPress's, so anyone can check what comes out, and the tool is published where anyone can run it. But no one independent has repeated the test, so it doesn't pass yet.
Test 5: The principles live in the structure
A future owner can't quietly remove them.
Volt is owned by my company, phpMyDEV LLC, and nothing in its structure stops a future owner from removing the export command or raising the price. The self-hosted option is the real protection today: the framework is open, so a site owner can always run it themselves. That's a good escape hatch, but it isn't a charter, so this one doesn't pass either.
The score
A pass on the test that matters most, for self-hosted and hosted sites both, two passes on paper, and two that aren't met yet. That's an honest picture of a small project built by one person, and it's more useful than a clean score would be.
The next steps are plain. Ship the corrected WordPress steps in the hosted download, and measure a larger hosted site going into WordPress on the live service. Until then, make the hosting pages say what's been proven. And ask someone outside to repeat the round trip. When any of those change, this page changes too, the way it already has once.