# Vercel Experiments

> Independent open-source playground for Next.js and Vercel platform experiments. Not affiliated with or endorsed by Vercel.

Vercel Experiments publishes deployable Next.js and Vercel platform experiments with docs, tests, and one-click Deploy buttons. Markdown negotiation is available on the homepage and docs (`Accept: text/markdown`).

## When to use this

Reach for Vercel Experiments when an agent or developer needs a concrete, deployable Next.js / Vercel lab rather than abstract docs:

- Implementing Edge Middleware, ISR, Blob, Redis, Neon, Cron, Queues, Workflows, Flags, webhooks, or AI SDK patterns on Vercel
- Looking up an experiment by slug, category, or tag via the public REST API / OpenAPI spec
- Preferring Markdown (`Accept: text/markdown`) or MCP tools over scraping HTML
- Scaffolding a new experiment that matches the catalog conventions

Do **not** treat this catalog as an official Vercel product API. Experiment Route Handlers live in each experiment app; the hub API only exposes catalog metadata.

## Developer resources

- [Developer portal](https://vercel-experiments.com/developers): API, OpenAPI, MCP, and agent entry points for Vercel Experiments
- [OpenAPI specification](https://vercel-experiments.com/openapi.json): machine-readable REST catalog schema
- [List experiments API](https://vercel-experiments.com/api/v1/experiments): public JSON catalog
- [MCP server](https://vercel-experiments.com/api/mcp): list_pages, get_page, and search tools
- [Full docs export](https://vercel-experiments.com/llms-full.txt): concatenated Markdown documentation

## Trust and project pages

- [About](https://vercel-experiments.com/about): project identity and affiliation disclaimer
- [Contact](https://vercel-experiments.com/contact): how to reach maintainers
- [Privacy](https://vercel-experiments.com/privacy): data practices for demos and analytics
- [Contribute](https://vercel-experiments.com/contribute): how to add experiments
- [GitHub repository](https://github.com/shrinathsnayak/vercel-experiments): source monorepo

## Optional

- [Sitemap](https://vercel-experiments.com/sitemap.xml)
- [Documentation home](https://vercel-experiments.com/docs)


## Docs: Documentation

- [Introduction](/docs): Independent playground for Next.js and Vercel platform experiments.
- [What's New](/docs/changelog): User-facing updates to Vercel Experiments - new labs, docs features, and notable changes.
- [Getting started](/docs/getting-started): Install dependencies and run the site locally.
- [Local development](/docs/local-development): Day-to-day workflow for working on the platform.
- [Adding an experiment](/docs/adding-an-experiment): Minimal workflow for registering a new experiment.
- [Experiment conventions](/docs/experiment-conventions): Standards every published experiment should meet.
- [Contribution guidelines](/docs/contributing): How to contribute code, docs, and experiments.

- **AI**
- [A/B Landing Copy Lab](/docs/experiments/ab-landing-copy-lab): AI generates two headlines, sticky cookie buckets assign A/B, and Redis/memory tracks impressions and conversions.
- [Accessibility Copy Fix](/docs/experiments/accessibility-copy-fix): Paste UI/marketing copy - local heuristics plus AI rewrites for a11y issues.
- [AI Code Sandbox](/docs/experiments/ai-code-sandbox): Run allowlisted arithmetic inside a Vercel Sandbox microVM - never unrestricted eval in-process.
- [AI Streaming Lab](/docs/experiments/ai-streaming-lab): Stream text, structured output, and tool calls through Vercel AI Gateway (or OpenAI) with the AI SDK.
- [API Mock from OpenAPI](/docs/experiments/api-mock-from-openapi): Paste an OpenAPI snippet - mock Next.js Route Handler stubs as downloadable text.
- [Before After Diff Lab](/docs/experiments/before-after-diff-lab): Two images - vision change summary (what changed, risk notes). Honest 503 without AI.
- [Budget Split Lab](/docs/experiments/budget-split-lab): Expenses and people - local fair-share math plus AI rationale for category splits.
- [Changelog from Diff Lab](/docs/experiments/changelog-from-diff-lab): Paste a PR diff or commit log - generateObject customer-facing bullets and internal notes.
- [Chat with Your PDF](/docs/experiments/chat-with-your-pdf): Chunk a document, retrieve top passages by keyword overlap (no embeddings), and answer with cited quotes.
- [Codebase README Lab](/docs/experiments/codebase-readme-lab): Paste a file tree and snippets - draft README sections downloadable as markdown.
- [Competitor Battlecard](/docs/experiments/competitor-battlecard): Paste positioning notes - structured battlecard talk tracks.
- [Competitor Page Diff](/docs/experiments/competitor-page-diff): Fetch two competitor URLs (capped), extract messaging, and generateObject a structured positioning diff.
- [Contract Clause Finder](/docs/experiments/contract-clause-finder): Paste a short contract or upload a PDF - structured risk clauses, obligations, and dates table via generateObject.
- [Cost-Aware AI Lab](/docs/experiments/cost-aware-ai-lab): Run the same prompt on two models via AI Gateway and compare latency plus labeled token/cost ESTIMATES.
- [CSV Insight Lab](/docs/experiments/csv-insight-lab): Paste or upload CSV (max 50 rows) - parse locally, then generateObject insights and chartReady aggregates without inventing rows.
- [Customer Voice Themes](/docs/experiments/customer-voice-themes): Feedback corpus - themes, quotes, and sentiment via generateObject.
- [Diagram to Mermaid](/docs/experiments/diagram-to-mermaid): Description or diagram image - Mermaid source with an accuracy caveat. Honest 503 without AI.
- [Docs to FAQ Lab](/docs/experiments/docs-to-faq-lab): Paste markdown docs - FAQ pairs with generateObject; Redis caches by content hash when configured.
- [Email Sequence Lab](/docs/experiments/email-sequence-lab): Product brief - multi-touch email sequence with day spacing helpers.
- [Feature Request Board](/docs/experiments/feature-request-board): Paste product ideas - AI clusters themes - Redis/memory vote counters with honest fallbacks.
- [Flashcards from Notes](/docs/experiments/flashcards-from-notes): Turn study notes into up to 12 flip cards with generateObject, then export the deck as JSON.
- [Form to CRM Lab](/docs/experiments/form-to-crm-lab): Lead form - Zod validate - AI enrich (companyGuess, urgency) - Neon insert or memory - optional outbound webhook.
- [GitHub Issue Triage](/docs/experiments/github-issue-triage): Paste an issue title/body - suggested labels, severity, and a first-response draft. No GitHub token.
- [Glossary Builder](/docs/experiments/glossary-builder): Turn domain text into a structured glossary with local candidate-term helpers.
- [Guardrails Lab](/docs/experiments/guardrails-lab): Allow/block/rewrite policy with an audit log; optional Redis rate limiting.
- [Habit Tracker Lite](/docs/experiments/habit-tracker-lite): Habit plan via AI plus Redis/memory check-ins and streak helpers in logic.ts.
- [Human-in-the-Loop Lab](/docs/experiments/human-in-the-loop-lab): AI proposes an email draft; you edit it, then POST the approved payload to a webhook URL.
- [i18n String Lab](/docs/experiments/i18n-string-lab): English strings - keyified catalog with placeholder extraction and sample locales.
- [Image Alt Studio](/docs/experiments/image-alt-studio): Upload an image - vision generateObject for alt text, SEO filename, and caption; optional Blob store.
- [Inbox Digest Cron](/docs/experiments/inbox-digest-cron): Seed inbox messages in Redis or memory, then a Cron-style Route Handler summarizes a digest (AI or deterministic).
- [Invoice Matcher Lab](/docs/experiments/invoice-matcher-lab): Paste invoice and purchase-order text - field-level match/mismatch with confidence scores.
- [Itinerary Builder](/docs/experiments/itinerary-builder): Destination and day count - streamed day-by-day itinerary JSON with local day clamping.
- [JSON Repair Lab](/docs/experiments/json-repair-lab): Paste broken JSON - heuristic (and optional AI) repair with a line-by-line diff.
- [Legal Hold Notice](/docs/experiments/legal-hold-notice): Educational litigation-hold notice draft generator with a prominent not-legal-advice banner.
- [Lighthouse Action Plan](/docs/experiments/lighthouse-action-plan): Paste Lighthouse JSON - prioritized P0/P1/P2 Next.js fix list grounded in weak audits.
- [Link Preview Enricher](/docs/experiments/link-preview-enricher): Fetch URL meta, rewrite titles with AI, render ImageResponse cards, and optionally store PNGs in Vercel Blob.
- [Meeting Agenda Lab](/docs/experiments/meeting-agenda-lab): Goals and duration - timed agenda with local minute allocation helpers.
- [Memory Thread Lab](/docs/experiments/memory-thread-lab): Multi-turn chat with Redis thread memory, TTL visualization, and an honest in-memory fallback.
- [Newsletter Remix](/docs/experiments/newsletter-remix): Remix an article into subject lines and tone variants with generateObject.
- [Notes to Actions Lab](/docs/experiments/notes-to-actions-lab): Paste meeting notes - generateObject action items with owner/due/status; persist to Neon or an in-memory session list.
- [npm Package Brief](/docs/experiments/npm-package-brief): Look up npm registry metadata for a package name (no install) and get when-to-use / when-to-avoid guidance.
- [OKRs from Strategy](/docs/experiments/okrs-from-strategy): Strategy narrative - objectives and key results JSON.
- [Onboarding Checklist AI](/docs/experiments/onboarding-checklist-ai): Role - AI onboarding checklist with Neon/memory progress tracking.
- [PDF Quiz Lab](/docs/experiments/pdf-quiz-lab): Paste text or upload .txt/.md/.pdf, extract content, and generate an interactive 5-question MCQ quiz with generateObject.
- [PDF Redaction Helper](/docs/experiments/pdf-redaction-helper): Paste text - AI suggests PII spans to review. Educational helper — not perfect redaction.
- [Pitch Deck Outline](/docs/experiments/pitch-deck-outline): Idea - streamed slide outline via streamObject.
- [Policy Simplifier Lab](/docs/experiments/policy-simplifier-lab): Paste terms or privacy text - plain-language summary, key bullets, and watch-outs (not legal advice).
- [Postmortem Generator](/docs/experiments/postmortem-generator): Incident notes - timeline, root cause, and action items (ops education, not blame).
- [Price Watch Lab](/docs/experiments/price-watch-lab): Track pasted product/price targets with AI notes and Redis/memory watch list.
- [Product Shot Copy](/docs/experiments/product-shot-copy): Product image - title/bullets via vision, plus optional ImageResponse OG card preview.
- [Prompt A/B Eval](/docs/experiments/prompt-ab-eval): Two system prompts on one user message — side-by-side outputs plus structured judge scores.
- [RAG from Markdown](/docs/experiments/rag-from-markdown): Paste multiple markdown files, retrieve top keyword chunks, and answer with cited source passages.
- [Receipt to JSON Lab](/docs/experiments/receipt-to-json-lab): Turn receipt text or an uploaded image into structured expense JSON with line items - text-only works without vision.
- [Recipe from Fridge](/docs/experiments/recipe-from-fridge): Paste fridge ingredients - structured recipe ideas with steps and missing items via generateObject.
- [Regex Explainer Lab](/docs/experiments/regex-explainer-lab): Explain a regex in plain English (AI) and highlight matches in a test string with pure logic.ts helpers.
- [Resume Fit Lab](/docs/experiments/resume-fit-lab): Score a resume against a job description with match score, missing skills, strengths, and rewritten bullets.
- [RFC Writer Lab](/docs/experiments/rfc-writer-lab): Problem statement - structured RFC outline sections via generateObject.
- [Robots Policy Advisor](/docs/experiments/robots-policy-advisor): Paste robots.txt or fetch from a URL - allow/deny explanation plus concrete crawl-policy suggestions.
- [RSS Digest Lab](/docs/experiments/rss-digest-lab): Fetch an RSS/Atom feed URL, take the top-N items, and generateObject short digests with a regenerate endpoint.
- [Schema from Sample Lab](/docs/experiments/schema-from-sample-lab): Paste JSON or CSV - TypeScript types and Zod schema strings you can download.
- [Screenshot to Ticket](/docs/experiments/screenshot-to-ticket): Upload a screenshot - vision generateObject bug report (title, steps, severity). Honest 503 without AI.
- [SEO Meta Auditor](/docs/experiments/seo-meta-auditor): Fetch a URL, find meta gaps, rewrite title/description/OG suggestions, and preview an ImageResponse card.
- [Slide Deck Summarizer](/docs/experiments/slide-deck-summarizer): Paste or upload a PDF/text deck - streamText per-slide bullets plus an executive brief.
- [SQL from Question Lab](/docs/experiments/sql-from-question-lab): DDL + English question - parameterized SQL and explanation; optional Neon run only when DATABASE_URL and demo tables exist (default explain-only).
- [Stack Trace Fixer](/docs/experiments/stack-trace-fixer): Paste an error + stack - Next.js tips and a repro checklist grounded in common App Router failure modes.
- [Streaming UI Checklist](/docs/experiments/streaming-ui-checklist): Prompt - streamObject checklist items that appear in the UI as the partial object grows.
- [Structured Form Filler](/docs/experiments/structured-form-filler): Paste prose - fill Zod form fields with per-field confidence scores via generateObject.
- [Support Triage Lab](/docs/experiments/support-triage-lab): Paste a support ticket - category, priority, and draft reply via generateObject; Redis rate limit when available.
- [Syllabus Planner Lab](/docs/experiments/syllabus-planner-lab): Paste a syllabus - weekly study plan JSON with topics, tasks, and estimated hours.
- [Tool-Calling Weather Demo](/docs/experiments/tool-calling-weather-demo): Chat with mock weather, time, and calculator tools plus a visible tool-call trace via the AI SDK.
- [Tutor Chat Lab](/docs/experiments/tutor-chat-lab): Streamed tutoring chat grounded in a topic you set; uses AI SDK streamText with honest 503 when no provider.
- [URL Brief Lab](/docs/experiments/url-brief-lab): Fetch a URL with size and timeout caps, stream a summary, and preview an ImageResponse Open Graph card.
- [Voice Notes Lab](/docs/experiments/voice-notes-lab): Paste a transcript (audio upload stubbed) - generateObject chapters, summary, and action items. Honest 503 without AI.
- [Whiteboard to Tasks](/docs/experiments/whiteboard-to-tasks): Upload a whiteboard photo - vision generateObject task list JSON. Honest 503 without AI.

- **Performance**
- [Cache Behavior Explorer](/docs/experiments/cache-behavior-explorer): Visualize cache hits, misses, stale responses, and Cache-Control strategies in simulated and real HTTP modes.
- [Image CDN Compare](/docs/experiments/image-cdn-compare): Compare the same public asset via raw URL vs /_next/image — size and Content-Type table.
- [Image Optimization Lab](/docs/experiments/image-optimization-lab): Tune next/image quality and sizes against a real optimized asset, plus format heuristics.
- [Stale-While-Revalidate Shop](/docs/experiments/stale-while-revalidate-shop): Catalog API with SWR Cache-Control headers, Redis/memory backing, and a freshness timeline.

- **Networking**
- [Stripe Events Sandbox](/docs/experiments/stripe-events-sandbox): Paste Stripe-like JSON, verify real HMAC signatures (t=/v1=), and append an idempotent Redis/memory event log.
- [Webhook Playground](/docs/experiments/webhook-playground): Generate a temporary endpoint, capture webhook requests, inspect payloads, and explore retries and idempotency.
- [Webhook to Sheet Lab](/docs/experiments/webhook-to-sheet-lab): Receive webhooks, append sheet-like rows in Redis/memory, and replay a captured payload.
- [WebSockets Lab](/docs/experiments/websockets-lab): Document Vercel/Fluid realtime constraints with an honest SSE playground versus full duplex WebSockets.

- **Security**
- [Auth-Gated Preview](/docs/experiments/auth-gated-preview): Password cookie gate unlocks draft/preview content while public view stays published-only.
- [Bot Protection Lab](/docs/experiments/bot-protection-lab): Challenge and rate-limit gate before a mock expensive AI route, with honest BotID documentation limits.
- [Content Security Policy Builder](/docs/experiments/content-security-policy-builder): Compose CSP directives and see which sample resources would be allowed or blocked.
- [Edge Auth Lab](/docs/experiments/edge-auth-lab): Issue and verify short-lived JWTs with jose, protect a route, and explore clock-skew failure cases.
- [Rate Limiting Simulator](/docs/experiments/rate-limiting-simulator): Compare rate-limit algorithms locally, then hit a live Upstash Redis fixed-window limiter.
- [Webhook Signature Verifier](/docs/experiments/webhook-signature-verifier): Practice HMAC signatures, timestamp tolerance, and replay prevention for webhook security.

- **Rendering**
- [Draft Mode CMS Lab](/docs/experiments/draft-mode-cms-lab): Edit markdown in the UI, store a draft in Blob or memory, enable Draft Mode preview, then publish live.
- [ISR Product Page](/docs/experiments/isr-product-page): Fake product pages with time-based revalidate plus an on-demand revalidatePath button.
- [ISR and Revalidation Playground](/docs/experiments/isr-revalidation-playground): Explore static rendering, revalidation intervals, on-demand refresh, and content freshness timelines.
- [Streaming SSR Playground](/docs/experiments/streaming-ssr-playground): Compare blocking and streamed rendering with Suspense boundaries and a timeline of render events.

- **Routing**
- [A/B Testing Lab](/docs/experiments/ab-testing-lab): Assign A/B variants via sticky cookie, log impressions and conversions in Redis or memory, and show conversion UI.
- [CDN Redirects Lab](/docs/experiments/cdn-redirects-lab): Edit a redirect map, export vercel.json redirects config, and evaluate rules client-side with the same engine.
- [Maintenance / Canary Lab](/docs/experiments/maintenance-canary-lab): Env or Global Config kill switch plus percentage canary cookie assignment with two UI variants and counters.
- [Microfrontends Zones Lab](/docs/experiments/microfrontends-zones-lab): Shell page plus zone child contract demo explaining Vercel microfrontends/zones with concrete rewrites.
- [Middleware and Routing Lab](/docs/experiments/middleware-routing-lab): Configure rewrites, redirects, locale and header routing, then inspect deterministic request decisions.

- **Platform**
- [Approval Workflow Lab](/docs/experiments/approval-workflow-lab): Draft - pending - approve/reject via opaque tokens. Neon/memory state machine with honest fallbacks.
- [Blob Storage Lab](/docs/experiments/blob-storage-lab): Upload, list, and delete objects with Vercel Blob - one-click store provisioning on Deploy.
- [Cron Jobs Lab](/docs/experiments/cron-jobs-lab): Inspect Vercel Cron schedules and persist heartbeat runs to Redis or Blob.
- [Cron Sitemap Rebuild](/docs/experiments/cron-sitemap-rebuild): Vercel Cron regenerates sitemap.xml from a content list backed by Neon, Blob, or memory.
- [Environment Variable Inspector](/docs/experiments/environment-variable-inspector): Use dummy values to learn which variables are public, server-only, or invalid.
- [Geolocation Lab](/docs/experiments/geolocation-lab): Read Vercel geo headers from the request, show a localized greeting, and demo Intl currency/date formatting.
- [Global Config Lab](/docs/experiments/global-config-lab): Read ultra-low-latency configuration from Vercel Global Config for flags and kill switches.
- [Invite-Only Beta](/docs/experiments/invite-only-beta): Redeem invite codes into a Redis/memory allowlist and gate a demo beta surface.
- [Job Queue Lite](/docs/experiments/job-queue-lite): Enqueue jobs in Redis/memory, drain via a Cron-style Route Handler, and watch progress in the UI.
- [Multi-Tenant Notes](/docs/experiments/multi-tenant-notes): Tenant from path segment or x-tenant-id header - isolated notes in Neon/memory with honest fallbacks.
- [Neon Postgres Lab](/docs/experiments/neon-postgres-lab): Insert and list rows with Neon serverless Postgres provisioned from the Vercel Marketplace.
- [Queues Lab](/docs/experiments/queues-lab): Publish to a durable Vercel Queues topic and process messages with a private push consumer.
- [Redis Cache Lab](/docs/experiments/redis-cache-lab): Set/get with TTL and exercise distributed rate limits on Upstash Redis from the Marketplace.
- [Status Page Lab](/docs/experiments/status-page-lab): Cron or manual synthetic checks hit a URL, store history in Redis or memory, and render a public status UI.
- [Usage Meter Lab](/docs/experiments/usage-meter-lab): Per-session API metering with soft and hard limits backed by Redis/memory counters.
- [Waitlist Viral Lab](/docs/experiments/waitlist-viral-lab): Email waitlist with Neon/memory storage, referral codes, position boosts, and Cron drip preview (no real email).
- [Workflows Lab](/docs/experiments/workflows-lab): Start a durable multi-step order workflow with use workflow, use step, and sleep on the Workflow SDK.

- **Developer Tools**
- [Env Promotion Checklist](/docs/experiments/env-promotion-checklist): Compare required environment variables across Preview vs Production with redacted values.
- [Favicon Brand Kit](/docs/experiments/favicon-brand-kit): Pick a brand color + letter - ImageResponse icon set (16/32/180/512) for favicons and PWA.
- [MCP Tools Lab](/docs/experiments/mcp-tools-lab): Standalone MCP-shaped tool server exposing experiment catalog search over a local registry snapshot.
- [OG from Database](/docs/experiments/og-from-database): Seed/list Neon product rows (or in-memory fallback) and render ImageResponse OG cards by slug.
- [OG Image Studio](/docs/experiments/og-image-studio): Design Open Graph social cards with live preview and downloadable output using Next.js ImageResponse.
- [Sitemap Health Lab](/docs/experiments/sitemap-health-lab): Fetch a sitemap URL, sample <loc> links, and check status codes with a rate-limited delay between requests.
- [Thumbnail Factory](/docs/experiments/thumbnail-factory): Title + theme - batch ImageResponse thumbnail URLs (square, wide, story) with no AI required.
- [Vercel Flags Lab](/docs/experiments/vercel-flags-lab): Evaluate platform-native Vercel Flags with entity targeting - local sticky simulator plus live flags-core.
