← All projects

curl2code

Dev toolIn production

A curl → code converter for 31 languages, right in the browser: all conversion runs on WebAssembly, no server. Around it — a request builder, bring-your-own-key AI, and 1,200+ SEO pages in 39 languages.

curl2code.com
Role
Product, design, frontend and infra — one person
Conversion
31 languages, 49 variants · fully in-browser on WebAssembly
Stack
Next.js 16 · TypeScript 5.9 (strict) · shadcn/Radix · Tailwind 4 · Zustand · PostgreSQL + Prisma · Redis
AI
BYOK — the key stays in the browser · OpenRouter, OpenAI, Anthropic, Google
Reach
39 UI languages (incl. RTL) · 1,200+ SEO pages
Timeline
Feb – May 2026 · ~97 commits · in production

Why it exists

Every developer has at least once copied a curl command from DevTools or some docs and rewritten it by hand into their language's code — headers, body, auth and all. Tedious and easy to get wrong.

curl2code removes that step: paste curl, get working code. Free, no sign-up, no tracking. The parsing core is the excellent open-source curlconverter library; my work was turning it into a finished product — the interface, the tools around it, privacy, speed, and tens of thousands of pages built for search.

31 languages — and not a byte to the server

Conversion into 31 languages and 49 variants — from Python requests to Rust reqwest to C libcurl — runs right in the browser on WebAssembly. It's not just fast (no server round-trip) — it's private: a curl command with its tokens and request body never leaves the user's machine. For a tool people paste real keys and headers into, that's fundamental.

31 languages and 49 variants — all conversion on WebAssembly, client-side.

More than a snippet

The output isn't a bare line. “Smart Clean” strips the junk headers DevTools adds to “Copy as cURL” so the code stays clean. “Full Example” mode builds a complete example — imports, types, error and status handling — the stuff you'd normally add by hand after converting.

Full Example mode: imports, error and status handling — ready-to-run code.

Request builder

Not everyone has a curl command ready. The builder assembles a request visually — method, URL, headers, auth, body (JSON/Raw/Form) — and produces both the curl and the code in the chosen language on the fly. Handy when you need to sketch an API request and grab it straight into your project.

Builder: assemble a request visually, get both curl and ready code.

Compare languages side by side

Split View shows the same command in two languages at once — say, Python and JavaScript side by side. Useful when you're porting a request between services on different stacks, or just deciding which fits better. And any result can be shared with a short link.

Split View: one command in two languages at once.

AI — on your own key

On top of conversion there are two AI tools: “Explain” describes in plain language what a curl command does, and “Reverse” does the opposite — turns code back into curl. The principle is bring-your-own-key: the user plugs in their own key (OpenRouter, OpenAI, Anthropic or Google), and it stays in the browser, never stored on the server. Each request is proxied with Redis-backed rate limiting.

Bring-your-own-key AI: four providers, the key lives only in the browser.

1,200+ pages for search — in 39 languages

Half the product is growth. For every language and scenario there's a dedicated landing page (“curl to Python”, “curl to Go”, etc.) with examples, FAQ and internal linking — over 1,200 SEO-optimised pages. Plus reference guides on curl. And all of it is translated into 39 UI languages, including RTL (Arabic, Hebrew, Farsi, Urdu) — on next-intl.

Language landing page: curl → code examples, FAQ, internal linking.
Reference guides: a thorough write-up per topic, built for search queries.

Under the hood

A static-at-heart frontend product with a thin server layer for the AI proxy and analytics. Built to be fast, private and cheap to run.

  • Next.js 16 (App Router) · TypeScript 5.9 in strict mode · Tailwind CSS 4
  • UI on shadcn/ui + Radix; state on Zustand 5
  • curlconverter compiled to WebAssembly — conversion on the client
  • i18n on next-intl: 39 locales, RTL support, 1,200+ static SEO pages
  • PostgreSQL 18 + Prisma 7, Redis 8 for AI-proxy rate limiting
  • Sentry for monitoring; tests on Vitest and Playwright
  • Code quality: ESLint 9, Prettier, Husky, lint-staged
Contact

Let's
talk.

Looking for a role in product / AI / operations — remote or relocation.

Open to new opportunities. Happy to walk you through my experience in detail, show you the projects, and share access to the code.

Open to remote / relocation / business trips