Lightning-fast, technology-agnostic SEO for websites, web apps, online shops and blogs — powered by pre-rendering middleware. Optimize TTFB, LCP, INP and CLS metrics, accelerate indexation, improve rich search results, and deliver consistent link previews across social and chat platforms.
- Why pre-rendering SEO middleware
- Terminology
- Which integration should I pick?
- Integrations
- Features and how-tos
- Shared references
- 🏎️ Expands crawl budget — improves timings for dynamic and static pages via advanced CDN and caching.
- 🚀 Boosts Web Vitals and Lighthouse scores.
- 🎛️ Improves TTFB, LCP, INP, CLS and other Web Vitals and Lighthouse metrics, positively enhancing overall SEO score.
- 🖥 Supports PWAs and SPAs.
- 📱 Supports mobile-like crawlers.
- ⚡️ Supports AMP (Accelerated Mobile Pages).
- 🤝 AI agents, search engines, and social network crawlers love optimized pages delivered in a blazingly-fast manner.
- 🖼️ Consistent link previews in messaging apps — iMessage, Messages, Facebook Messenger, Slack, Telegram, WhatsApp, Viber, VK, Twitter/X, and others.
- 👥 Image, title, and description previews for links posted on social networks — Facebook, X/Twitter, Instagram, LinkedIn, and others.
Common terms used across the pre-rendering documentation:
- Pre-rendering / SEO middleware — thin micro-service that redirects bot traffic to ostr.io rendering endpoints.
- Search engine — system designed to search for information on the Web (Google, Yahoo, Bing, etc.). Wikipedia.
- AI chat / AI bot / AI agent — interface to an LLM that can search the web (ChatGPT, Perplexity, Gemini, Grok, Claude and similar).
- Crawler — internet bot that systematically browses the Web. Wikipedia. Crawlers are an internal part of search engines, messengers, and social networks (Facebook, Viber, WhatsApp, Skype, etc.) and typically fetch image, title, and description information for shared links.
- Spider — same as crawler.
- Cache / caching — page rendering is a time- and resource-consuming operation. To provide the best possible response time, pre-rendered results are stored for the period defined as Cache TTL.
- Cache freshness / Cache TTL — time in hours during which cache remains fresh and is served to all matching requests.
- Pre-rendering engine — core of the pre-rendering SEO middleware.
- (Pre)rendering endpoint — address where the pre-rendering engine is located. We offer three differently-configured rendering endpoints to fit every case.
Pick based on where you can change configuration:
| If you control… | Pick |
|---|---|
| DNS / CDN only (no server, no code access) | Cloudflare Worker — works with Webflow, Framer, Squarespace, Wix, Ghost, Notion-proxied sites, and more |
| An Amazon CloudFront distribution | AWS Lambda@Edge — CloudFront Function plus origin-request Lambda@Edge |
| A Shopify store | Cloudflare Worker for Shopify |
| A Netlify deployment (PRO / ENTERPRISE) | Netlify integration |
| A Vercel deployment | Vercel Routing Middleware |
| A Supabase Edge Function serving HTML | Supabase integration — Deno, Hono, Oak, Fresh |
| A reverse proxy | Nginx, Apache, or Caddy |
| Next.js application code | Self-managed middleware.ts or seo-middleware-nextjs NPM package |
| Any other Node.js app | spiderable-middleware NPM package |
| A Meteor.js app | ostrio:spiderable-middleware Atmosphere package |
Supported integration paths.
Operate at the CDN / worker layer — no origin, server, or application changes required. Ideal for hosted/no-code platforms where you cannot deploy middleware yourself.
- General Cloudflare Worker — Cloudflare Worker integration. Compatible with Webflow, Framer, Squarespace, Wix, Carrd, Bubble, Ghost(Pro), Substack, Notion-proxied sites, WordPress.com, BigCommerce, Wix Stores, and any origin reachable through Cloudflare's orange-cloud DNS.
- AWS Lambda@Edge — AWS Lambda@Edge integration. CloudFront Function marks crawler cache variants before cache lookup; origin-request Lambda@Edge rewrites matching cache misses to ostr.io.
- Shopify — Cloudflare Worker for Shopify. Dedicated walkthrough for Shopify domains (including Shopify-managed domains that need to be transferred to Cloudflare first).
Enable at the hosting-platform level — no plugins, no codebase changes.
- Netlify — enabled via Netlify Support on PRO / ENTERPRISE plans.
- Vercel — drop-in Vercel Routing Middleware; one
middleware.jsfile plus env vars. - Supabase — Deno-native middleware for Supabase Edge Functions. Complete examples for plain
Deno.serve, Hono, Oak, and Fresh.
Integrate with your reverse proxy — no plugins required.
- Nginx —
map $http_user_agent+@prerenderinginternal location. Complete stack-specific examples for Node.js, Go, Django, Laravel, WordPress, PHP-FPM, and Phusion Passenger. - Apache —
mod_rewrite+mod_proxy. Complete stack-specific.htaccessexamples for WordPress, Drupal, Joomla, Magento, Moodle, Laravel, Zend/Laminas, and plain PHP. - Caddy — Caddyfile-based integration. Complete examples for Node.js/Next.js, PHP, Django, static sites, and other frameworks.
Application-specific integrations via NPM / Atmosphere packages.
- Next.js — self-managed
middleware.ts— copy one file into the project, no extra dependency. - Next.js —
seo-middleware-nextjsNPM package — maintained package, one-line import. - Node.js —
spiderable-middlewareNPM package — works with Express, Connect, Koa, Fastify (via adapter), vanillahttp, and any Node middleware signature. - Meteor.js —
ostrio:spiderable-middlewareAtmosphere package — plugs intoWebApp.connectHandlers.
Learn how to use different features and settings within pre-rendering SEO middleware.
Tip
Pass /sitemap.xml to Pre-Render (Pre-render a website) in the Pre-rendering Panel to instantly render the whole website.
- Accelerated Mobile Pages (AMP) integration
- Detect pre-rendering engine requests during runtime
- Detect pre-rendering engine requests during runtime — Meteor.js
- Use
cURLwith anAuthorizationheader (see Nginx integration):curl -v -H "Authorization: Basic TOKEN" https://render-bypass.ostr.io/?url=https://your-website-domain.com - Use
cURLwith authentication credentials (see Node.js integration):curl -v https://auth:string@render-bypass.ostr.io/?url=https://your-website-domain.com - Use
test:testcredentials to verify general integration (confirms that the web application server can reach the pre-rendering service). - Use the
Authorization: Basic dGVzdDp0ZXN0header to verify general integration (confirms that the web application server can reach the pre-rendering service).
Canonical regex sources used by every integration:
If the user works with an AI coding agent (Cursor, Claude Code, Codex CLI, Antigravity, or any SKILL.md-aware agent), install the ostrio-prerendering Agent Skill from ostr-io/ostrio-agent-skills. It bundles stack detection, the integration decision tree above, patch-ready templates for every tier, the full curl validation matrix, troubleshooting (symptom → cause → verify → fix), and cache-purge runbooks.