Skip to content
, ,

Val Town Is Shutting Down: How to Export Your Vals and the Best Alternatives

9–14 minutes
Surprised woman in a purple hoodie on a park bench, VALTOWN card, hook jan 10 val town ends

Val Town is winding down. Founder Steve Krouse announced on November 10, 2026 that signups are closed, code goes read-only on December 10, and all services end on January 10, 2027.

If you have HTTP vals, cron jobs or email handlers running there, you have about two months to move them. The good news is that Val Town has published detailed migration guides.

This guide covers the key dates, how to export your code and data, and which alternative fits you best.

TLDR

  • Dec 10, 2026: code becomes read-only (SQLite and blob storage stay writable). Redirects you set become permanent.
  • Jan 10, 2027: all services end. Vals stop running.
  • Feb 1, 2027: Val Town plans to open-source the platform.
  • Best match: Val Town calls Cloudflare “the most feature-equivalent platform” and is moving its own vals there.
  • Avoid Deno Deploy: Deno announced on October 9, 2026 that Deno Deploy will shut down after six months.

What Happened and Why

Val Town was a popular place to write small TypeScript functions (“vals”) in the browser and run them instantly as APIs, cron jobs or email handlers. It ran on the Deno runtime.

In the announcement, Krouse says the company could not compete in the cloud computing space. He frames it as good news for users, because there are many strong hosting providers to move to.

What happens to paid plans

  • Billing: paused from November 10, 2026.
  • Existing subscriptions: keep working for free until shutdown.
  • Annual prepaid plans: get a partial refund.
  • Help: email support@val.town or ask in the Val Town Discord.

Key Dates You Must Know

Date What changes What you should do
Nov 10, 2026 New signups and plan upgrades end. Billing pauses. Make a list of every val you rely on.
Dec 10, 2026 Code becomes read-only (except SQLite and blob storage). Redirects become permanent. Finish code export and set val.run redirects before this date.
Jan 10, 2027 All other services end. Have data copied and new hosts live.
Feb 1, 2027 Val Town plans to open-source the platform. Optional: self-host later if you want.

Warning: After December 10 you cannot edit code or change redirects. Treat that as your real deadline, not January 10.

How to Export Your Vals

Val Town’s own docs say the first step is getting your code into Git. You have three main ways to do that.

Option 1: The vt CLI

  1. Install Deno. The vt CLI runs on Deno, so install it from the Deno website first.
  2. Install vt. Run deno install -grAf jsr:@valtown/vt in your terminal.
  3. Log in. Run vt on its own. It walks you through login.
  4. Clone each val. Run vt clone and pick the val. Say “Yes” when it offers to add editor files, then cd into the folder.
  5. Commit to Git. Run git init, add a .gitignore first, then commit and push to a private GitHub repo.

Option 2: GitHub sync

Val Town has a GitHub sync feature with guides for syncing val code and using GitHub Actions with the vt CLI. It is handy if you have many vals to back up.

Option 3: Let an AI agent do it

Val Town’s migration overview includes a ready-made prompt. It asks your agent to install the Val Town plugin or MCP server, list which vals to keep, choose a platform and propose a plan for your approval.

The announcement even says today’s LLMs are good at these migrations. If you use Claude Code, see my Claude Code MCP setup guide to connect the server.

What to clean up in the code

  • esm.town imports: copy those val files into your project and use relative imports, keeping licences.
  • npm: and CDN imports: install the package and add it to package.json.
  • Deno-only APIs: swap them for standard Web or Node APIs.
  • Secrets: never commit env values, .env files or database exports.

Tip: Add your .gitignore before the first commit. Ignoring a file later does not remove it from Git history.

How to Export SQLite, Blobs and Secrets

Code is only half the job. Val Town’s docs give careful, step-by-step guides for data, mainly written for Cloudflare but useful anywhere.

SQLite data

  1. Find the right database. Check if the app uses its own database or the older account-wide one. Note tables, indexes and row counts.
  2. Add a temporary export endpoint. Val Town’s guide provides an HTTP file that dumps your tables as SQL, protected by a SQLITE_EXPORT_TOKEN secret.
  3. Pause writes. Stop jobs that write to these tables.
  4. Download the dump. Run the guide’s script, passing the token through the environment. Check the file ends with -- Export complete.
  5. Import into the new database. For Cloudflare D1, remove the dump’s BEGIN TRANSACTION and COMMIT lines, then run the import command below.
  6. Clean up. Delete the export endpoint and the token once the import is verified.
npx wrangler d1 execute DATABASE_NAME --remote --file=app.sql

Note: Val Town SQLite is powered by Turso, so Turso is another natural home for that data if you do not want D1.

Blob storage

List your blob keys with pagination and copy the actual bytes, keeping keys and content types. Then compare counts, sizes and hashes before switching. A failed or rate-limited listing does not mean the store is empty.

Environment variables and secrets

Val Town does not recommend a plain export of all env vars. Its guide uses an encrypted transfer: you make a key pair locally, encrypt the chosen secrets inside Val Town, then decrypt locally and pipe them to wrangler secret bulk.

If you only have a couple of keys, the simplest safe path is to copy them from the original provider (for example, regenerate an API key) and set them on the new host.

Best Val Town Alternatives

Here is how the main options map to Val Town features, based on Val Town’s own “where to migrate” table. “Yes” means a built-in product.

Provider Website / HTTP SQLite Blob Cron Email Free plan
Cloudflare Workers Yes Yes (D1) Yes (R2) Yes Yes 100,000 requests/day
Vercel Yes No Yes Yes No Hobby: 1M function invocations, non-commercial only
Netlify Yes No Yes Yes No Check Netlify pricing
Render Yes No No Yes No Check Render pricing
Railway Yes No Yes Yes No Check Railway pricing
Supabase No Yes Yes Yes No Check Supabase pricing

Cloudflare Workers: the closest match

Val Town calls Cloudflare “the most feature-equivalent platform” and is moving its own blog and docs there. Its guide maps every Val Town piece to a Cloudflare product.

  • HTTP vals: a Worker fetch() handler.
  • Cron vals: Cron Triggers with a scheduled() handler.
  • Email vals: Email Routing.
  • std/sqlite: D1. std/blob: R2.
  • std/openai: AI Gateway.

The free plan gives 100,000 requests per day and 10 ms CPU per request. The paid plan starts at $5 per month with 10 million requests included. D1 free gives 5 GB of storage, and R2 free gives 10 GB a month with free egress.

Vercel: great for web apps

Val Town says Vercel has “almost all of the features from Val Town built-in” or via its Marketplace. The free Hobby plan includes 1,000,000 function invocations a month, but it is for personal, non-commercial use only.

Other good picks

  • Netlify: similar to Vercel, with Netlify Blobs and Scheduled Functions.
  • Render: solid web hosting plus built-in Cron Jobs.
  • GitHub Actions: fine for simple scheduled scripts with no web endpoint. See my GitHub Actions setup guide for a primer.
  • Vibe coding tools: Val Town’s docs also mention Lovable, Replit, v0 and Claude Artifacts for prototypes.

Why Not Deno Deploy?

Deno Deploy looks like the obvious home, since vals already run on Deno. But on October 9, 2026, Ryan Dahl announced that the Deno team is joining Cloudflare.

The Deno blog says “Deno Deploy will continue operating for six months before shutting down.” Paying customers get migration help to Cloudflare Workers. The Deno runtime gets one more year of monthly bug fix and security releases.

Quick answer: Do not move to Deno Deploy. You would have to migrate a second time within months. Val Town’s docs also recommend Node, Bun or a provider runtime like Workers instead of Deno.

Step by Step: Move an HTTP Val to Cloudflare Workers

Here is a simple path for a typical HTTP val. It uses standard Cloudflare commands plus the Val Town guides above.

  1. Create a Cloudflare account. Then install Node.js, which you need for Wrangler.
  2. Create a Worker project. Run npm create cloudflare@latest -- my-val and pick a “Hello World” Worker.
  3. Move your handler code. Put your val’s request logic inside the fetch(request, env, ctx) handler in src/index.js or src/index.ts.
  4. Fix imports. Install npm packages and replace esm.town imports with local files.
  5. Add bindings. Add D1, R2 or cron settings to your Wrangler config file.
  6. Set secrets. Use npx wrangler secret put NAME for each key, or the Val Town encrypted transfer.
  7. Test locally. Run npx wrangler dev and hit your endpoints.
  8. Deploy. Run npx wrangler deploy and test the live workers.dev URL.
  9. Redirect. Point your old val.run URL to the new address (next section).

A minimal Worker looks like this:

export default {
  async fetch(request, env, ctx) {
    return new Response("Hello from my migrated val!");
  },
};

Moving a cron val

Add the schedule to your Wrangler config and put the job in a scheduled() handler. Cloudflare Cron Triggers use UTC, so convert local times.

{
  "triggers": { "crons": ["0 * * * *"] }
}
export default {
  async scheduled(event, env, ctx) {
    await runJob(env, event.scheduledTime);
  },
};

Disable the Val Town schedule before you turn on the Cloudflare one, so jobs do not run twice.

Redirect Your val.run URLs

Val Town lets you redirect each *.val.run URL to its new home. Set these after the new app is fully working, because the val stops getting requests once a redirect is set.

  1. Per val: open the val’s settings, scroll to HTTP, click the arrow next to the endpoint and add the redirect location.
  2. All at once: go to val.town/settings/domains, open Custom Domains, find Val.run redirects and add each target.
  3. Update webhooks directly: many webhook senders do not follow redirects, so change those URLs at Stripe, GitHub and so on.

Path and query strings carry over by default. On December 10, 2026, every redirect you have set becomes permanent. Custom domains are not covered, so change their DNS with your domain provider.

My Take

This is sad news. Val Town made “write a function, get a URL” feel magical, and plenty of small tools depend on it.

That said, the shutdown is handled well. Two months of notice, paused billing, permanent redirects and AI-friendly migration docs are much better than most closures.

My advice is simple. Move to Cloudflare Workers unless you have a strong reason not to, finish before December 10, and skip Deno Deploy. If you plan to use an AI agent, an AGENTS.md file describing your vals will help it a lot.

Troubleshooting: Common Problems and Fixes

  • vt command not found: make sure Deno is installed and its bin folder is on your PATH, then reinstall with deno install -grAf jsr:@valtown/vt.
  • Imports fail after moving: search your code for esm.town and https: imports and replace them with npm packages or local files.
  • SQLite dump will not import into D1: remove the BEGIN TRANSACTION and COMMIT lines and keep tables in foreign-key order.
  • Downloaded dump looks wrong: if it does not end with -- Export complete, or is an HTML login page, delete it and download again.
  • Cron runs at the wrong hour: Cloudflare uses UTC. Convert your old local-time schedule.
  • Webhooks stopped working: the sender probably does not follow redirects. Update the URL in the provider’s dashboard.
  • Vercel warns about usage: the Hobby plan is non-commercial. Use Pro or Cloudflare for business tools.

Frequently Asked Questions

When does Val Town shut down?

Code becomes read-only on December 10, 2026, and all services end on January 10, 2027. Signups closed on November 10, 2026.

Will I get a refund?

Billing is paused and existing subscriptions run free until shutdown. Annual prepaid customers get a partial refund.

What is the best Val Town alternative?

Val Town itself calls Cloudflare the most feature-equivalent platform. Vercel is a strong choice for web apps.

Can I still move my vals after December 10?

Your vals keep running until January 10, 2027, but code becomes read-only. Export code and set redirects before December 10 to be safe.

Should I move to Deno Deploy?

No. Deno announced on October 9, 2026 that Deno Deploy will shut down after six months of operation.

Will Val Town be open source?

Yes, Val Town plans to open-source the platform on February 1, 2027. The announcement does not name a licence.

What happens to my val.run URLs?

You can redirect them to new addresses until December 10, 2026, when the redirects become permanent.

Sources

Free weekly email

Get new AI guides every week

One short weekly email with our newest local AI, ComfyUI and AI tool guides. No spam, no pop-ups, just the good stuff.

Free. Unsubscribe anytime in one click. We only use your email to send this newsletter. See our privacy policy.

Surprised woman in a purple hoodie on a park bench, VALTOWN card, hook jan 10 val town ends