RegexPilot — Regex you can see.
Skip to main contentFeaturesDemoLibraryThemesRoadmap<br>v1.0.1 · out now for macOS<br>A regex should read like a sentence.<br>— not look like your fr.*ak/i\n/g password.<br>A Mac-native visual regex builder with AI. Drag blocks. Ask in English. Test against real engines.<br>Download for macOSBuy €19Try it below →<br>Free JS/TS tier · 30-day trial of all 21 flavors · €19 one-time · macOS 14+ · 8 MB core app · ~72 MB with 11 bundled regex engines + offline voice STT · zero tracking
RegexPilot — watch the walkthrough
Click to watch fullscreen
Zero tracking<br>No telemetry, no analytics, no cloud by default.
Runs offline<br>Bring your own AI key, or never talk to the network.
Instant launch<br>Rust + Tauri native. No Electron, no startup tax.
Multi-flavor<br>JS · Python · Java · C# · Ruby · Go · PHP · Perl · Rust · PCRE…
Live demo<br>Try it right here.<br>The actual app, running in your browser. Drag blocks from the palette, or paste a regex into the field at the top. Click the frame to expand full-screen.
Click to launch demo<br>Tip · Drag any palette item onto the canvas, or hit ⌘ K to focus the pattern input.
The sketch that became RegexPilot.Why this exists<br>The drawing, made live.<br>I found myself drawing the regex every time — on paper, on whiteboards, in the corner of a notebook. ^, a bubble for "any word character", an arrow into a group, with the English sentence scribbled underneath so I wouldn't lose what I meant.<br>RegexPilot is that drawing, made live. The bubbles you draw become the pattern, the arrows become the rail, and the natural-language caption you mumble to yourself sits right there in the Breakdown panel.<br>Built solo · Belgium · 6 months and counting<br>— Kristof
Visual builder<br>Stop decoding regex in your head.<br>Drag blocks from a categorised palette, connect them on a railroad track, and see a plain-English breakdown of the whole pattern while you work.<br>Drag-and-drop builder with palette categories for characters, anchors, groups, lookarounds.<br>Inspector panel for precise edits on any node without touching the source string.<br>Breakdown tree that explains every part in plain English, bidirectionally linked to the rail.<br>Undo / redo , copy / paste, drag-to-reorder — every affordance you already know.
Canvas<br>\b\w0 or more@CLASSOne of:a-z1 or more<br>.CLASSOne of:a-z2 or more<br>\b/g
Breakdown Tree<br>\bWord boundary. Position at the edge of a word.<br>\wWord. Letters, digits, underscore.<br>*Quantifier. Zero or more.<br>@Character. Matches “@”.<br>[Character set. One of:<br>a-zRange. “a” to “z”.<br>+Quantifier. One or more.<br>\.Escaped character. Matches “.”.<br>[Character set. One of:<br>a-zRange. “a” to “z”.<br>{2,}Quantifier. Two or more.<br>\bWord boundary. Position at the edge of a word.
AI + visual, together<br>AI drafts. You direct.<br>Describe a pattern in plain English and get a working draft in seconds. The visual editor is how you catch what the AI got almost right — before it ships to production.<br>AI is a good starting point — but it often needs tweaking. A misplaced anchor. A quantifier off by one. A character class that skips the edge case you mentioned. Without a visual editor, those are six debug loops away. With one, they're a one-drag fix.<br>Generate from a prompt — "match UK postcodes, optional space" → a draft, not a StackOverflow rabbit hole.<br>Explain any pattern — paste legacy regex, get a plain-English breakdown grouped by intent.<br>Spot the assumptions — every pill shows what it matches. If the AI assumed 4 digits when you meant 1–4, you see it immediately.<br>Authentic engines for Java, Ruby, C#, PHP — so "worked in ChatGPT" actually means "works in production".<br>Bring your own key for OpenAI, Claude, Gemini, DeepSeek, Qwen, Mistral, Groq, OpenRouter, xAI (Grok) — or any OpenAI-compatible endpoint.<br>Or run fully offline — any OpenAI-compatible local runtime works: LM Studio, Ollama, llama.cpp, or LocalAI. Point RegexPilot at the localhost port and go.
AI chat<br>> match UK postcodes, with or without space<br>Draft: ^[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][A-Z]{2}$Confidence: high
⚠ Caught on the canvas<br>AI used a literal space . Your test data has entries without it (M11AA). One drag: make the space optional with \s? — fixed.
Test engines<br>java — 18/18 matches · authentic JDK<br>python — 18/18 · pcre2 adapter<br>ruby — 18/18 · embedded CRuby
Languages<br>21 regex flavors. Authentic engines where they matter.<br>Every flavor routes to the real engine its production code uses — not a JavaScript polyfill pretending to be Python. Switch flavors from the toolbar; the same pattern tells you exactly what each engine does with it. Python even toggles between the stdlib re and the third-party regex module — unlocking fuzzy matching ({e), set operations ([\w--\d]), and recursive patterns ((?R)).
JavaScript / TypeScript<br>regress · ES2018
Python<br>CPython 3.12 — stdlib re + regex module (fuzzy, set-ops, recursion)
Java<br>java.util.regex (GraalVM AOT)
Scala · Kotlin · Groovy · Clojure<br>JVM regex (shared)
C# / .NET<br>.NET 9 Regex (NativeAOT)
Ruby<br>CRuby 3.4...