Switch from another prerender service in 5 minutes
Last reviewed
If your site already sends crawlers to a prerender service, you keep your middleware and change two values: the service URL and the token. Prebaked speaks the same protocol as the open-source prerender middlewares (prerender-node, prerender_rails and the common nginx config), so there is no new code to write.
Find your plan
What changes and what stays
| Before | After | |
|---|---|---|
| Middleware | prerender-node, prerender_rails, nginx config or an edge script |
The same |
| Service URL | Your current service | https://service.prebaked.io/ |
Token header X-Prerender-Token |
Your current token | Your Prebaked token |
| Request format | GET <service URL>/<full page URL> |
The same |
Status codes, prerender-status-code and prerender-header meta tags |
Supported | The same |
| What your visitors see | Your site | Your site |
Before you start
- Sign up for Prebaked.
- Add and verify your domain (for example
www.<your-domain>), with a DNS TXT record or a file. Prebaked renders only verified domains. Until the domain is verified, it answers 403. - Copy your token. It is shown once. You can rotate it later in the dashboard.
Step 1: change the service URL and token
Use these values everywhere:
| Setting | New value |
|---|---|
| Service URL | https://service.prebaked.io/ |
Token header X-Prerender-Token |
your Prebaked token |
Use https://. Prebaked refuses plain http:// calls with 403, because the token would travel in clear text, and it never redirects them.
prerender-node (Express, Connect)
Change the two settings wherever you set them now:
prerender
.set('prerenderServiceUrl', 'https://service.prebaked.io/')
.set('prerenderToken', process.env.PREBAKED_TOKEN);
Or set the environment variables the middleware reads:
PRERENDER_SERVICE_URL=https://service.prebaked.io/
PRERENDER_TOKEN=<your token>
Recommended while you are there:
- Add the
afterRenderhook, so crawlers get your normal page instead of an error if the prerender service fails. - Add the AI crawlers that prerender-node 3.8.3 does not recognise:
prerender.addUserAgents(['OAI-SearchBot', 'ClaudeBot', 'Claude-User', 'meta-externalagent']);
Full steps: Express install guide.
prerender_rails (Rails, Rack)
Change the prerender_service_url: and prerender_token: options of Rack::Prerender, or the environment variables:
PRERENDER_SERVICE_URL=https://service.prebaked.io/
PRERENDER_TOKEN=<your token>
prerender_rails defaults to http://, so set the https:// URL explicitly.
nginx
In your current config, change the prerender host in proxy_pass (or the variable that holds it) to service.prebaked.io, use https://, and put your Prebaked token in proxy_set_header X-Prerender-Token.
The usual nginx prerender config passes every service error on to the crawler. Prebaked's config falls back to your site on errors and timeouts and includes Prebaked's crawler list, so consider replacing your block with it: nginx install guide.
Cloudflare Worker, Netlify, Vercel or another edge script
If your current service gave you a worker or edge script, change its service URL and token the same way. Or replace it with Prebaked's version, which falls back to your site on errors and after 5 seconds:
Step 2: deploy and check
curl -A "Googlebot" https://www.<your-domain>/ # rendered HTML from Prebaked
curl https://www.<your-domain>/ # your normal page
The first crawler request appears in the request log in the Prebaked dashboard. The first request for each page renders it, and later requests are served from the cache. Cache hits are free: you pay only for fresh renders.
You can also run the free checker to compare what crawlers without JavaScript get with what people see.
See what ChatGPT sees on your site
What is different with Prebaked
- HTTPS only. Plain
http://service calls get 403. - No
_escaped_fragment_URLs. - Error codes. Wrong token: 401. Domain not verified: 403. With the recommended fallback setups, crawlers get your normal page instead of these errors.
- Never worse than today. Prebaked answers within its own time limit. If a page is not ready, it returns your origin page (fetched without JavaScript, with its own status code) and finishes rendering in the background for the next crawler. With the edge integrations, crawlers also get your site if Prebaked is unreachable or slower than 5 seconds.
- AI crawlers included. Prebaked's crawler list includes ClaudeBot and OAI-SearchBot.
- Pricing: you pay for fresh renders, and cache hits are free. Plans: pricing.
30-day free trial, no card.
Starter
$9 / month
or $90 / year
- 25,000 fresh renders / month
- 3 domains
Growth
$29 / month
or $290 / year
- 150,000 fresh renders / month
- 10 domains
Pro
$79 / month
or $790 / year
- 500,000 fresh renders / month
- 50 domains
Prices in USD, excluding taxes.
Switching from Rendertron
Rendertron is an open-source headless Chrome rendering service, published in Google's GoogleChrome organisation on GitHub. Its repository says the project is deprecated and will not be actively maintained, and it was archived on 6 October 2022.
Rendertron uses its own middleware (rendertron-middleware), which is configured with a proxyUrl pointing to your Rendertron instance and has no token setting. So the switch is not only a URL change. Replace the Rendertron middleware with one of the Prebaked setups:
- Express: replace
rendertron-middlewarewithprerender-nodeset to Prebaked's service URL and token. See the Express install guide. - Any other stack: put the Cloudflare Worker, Netlify, Vercel or nginx setup in front of your site.
- Shut down your Rendertron instance after the check in step 2 passes.
You no longer run and update a headless Chrome server yourself.
When you may not need a prerender service
Google describes dynamic rendering (serving crawlers a rendered version of the page) as a workaround and not a recommended solution. If you can move your app to server-side rendering or static generation, crawlers get the content without any service in between. A prerender service fits when changing the app is not practical. Background on why AI crawlers need the content in the HTML: Can ChatGPT read JavaScript? and AI crawlers and JavaScript sites.
FAQ
Do I need to change my code to switch?
No, if you already use prerender-node, prerender_rails, the common nginx config or an edge script that calls a prerender service. You change the service URL and the token. Adding the afterRender fallback and the extra AI crawler user agents is recommended but optional.
Will my pages need to be rendered again?
Yes. Prebaked starts with an empty cache, so the first crawler request for each page is a fresh render. Later requests are served from the cache. You can warm the cache from your sitemap in the dashboard settings.
What happens if Prebaked is down or slow?
Crawlers get your original page. The edge integrations fall back after 5 seconds or on any Prebaked error, and the nginx and Express setups fall back on errors when configured as in the install guides.
Is prerendering cloaking?
Not when the content is the same. Google's guidance says that dynamic rendering which produces similar content is not treated as cloaking. Prebaked renders the page your visitors see and does not change it for bots.
Do the prerender status code meta tags still work?
Yes. <meta name="prerender-status-code" content="404"> and <meta name="prerender-header" content="Location: ..."> work as before and stay in the returned HTML.
Can I switch back?
Yes. Your middleware stays the same, so switching back means changing the service URL and token again.
Does Prebaked work with Rendertron's middleware?
No. Rendertron's middleware is built to call a Rendertron server and has no token setting. Replace it with prerender-node or one of the Prebaked integrations, as described above.