A regex should read like a sentence.
— not look like your fr.*ak/i\n/g password.
RegexPilot is a Mac-native visual regex builder with AI. Drag blocks. Ask in English. Test against real engines.

Try it right here.
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.
![Hand-drawn date-regex sketch on a sticky note: three boxed sub-patterns labelled YEAR (4 digits), MONTH (0[1-9] or 1[0-2]), and DAY (0[1-9] or [12] digit or 3[01]) joined by dashes.](/sketch-date-pattern.jpg)
The drawing, made live.
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.
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.
Stop decoding regex in your head.
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.
- Drag-and-drop builder with palette categories for characters, anchors, groups, lookarounds.
- Inspector panel for precise edits on any node without touching the source string.
- Breakdown tree that explains every part in plain English, bidirectionally linked to the rail.
- Undo / redo, copy / paste, drag-to-reorder — every affordance you already know.
\bWord boundary.Position at the edge of a word.\wWord.Letters, digits, underscore.*Quantifier.Zero or more.@Character.Matches “@”.[Character set.One of:a-zRange.“a” to “z”.+Quantifier.One or more.]\.Escaped character.Matches “.”.[Character set.One of:a-zRange.“a” to “z”.{2,}Quantifier.Two or more.]\bWord boundary.Position at the edge of a word.AI drafts. You direct.
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.
- Generate from a prompt — "match UK postcodes, optional space" → a draft, not a StackOverflow rabbit hole.
- Explain any pattern — paste legacy regex, get a plain-English breakdown grouped by intent.
- Spot the assumptions — every pill shows what it matches. If the AI assumed 4 digits when you meant 1–4, you see it immediately.
- Authentic engines for Java, Ruby, C#, PHP — so "worked in ChatGPT" actually means "works in production".
- Bring your own key for OpenAI, Claude, Gemini, DeepSeek, Qwen, Mistral, Groq, OpenRouter, xAI (Grok) — or any OpenAI-compatible endpoint.
- 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.
^[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][A-Z]{2}$M11AA). One drag: make the space optional with \s? — fixed.21 regex flavors. Authentic engines where they matter.
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<=1}), set operations ([\w--\d]), and recursive patterns ((?R)). Why it matters: 264 of 534 tested constructs behave differently across engines — and only 83 say so.
JavaScript / TypeScript
Python
Java
Scala · Kotlin · Groovy · Clojure
C# / .NET
Ruby
PHP
Go / RE2
Rust
Perl
Swift
Shell (POSIX BRE/ERE)
Elixir
R
Dart
MySQL 8
PostgreSQL
- freeJavaScript & TypeScript on the system
JavaScriptCore— the engine Safari runs. No license, no install. - bundledSidecar binary inside the .app, or the in-process engine is bit-identical to the language's own (PostgreSQL → Spencer ARE from postgres source; MySQL → PCRE2+UCP for ICU equivalence; Elixir/R → libpcre2; Dart → ES2018 via
regress).
Test and trust.
Three ways RegexPilot catches the thing you would have shipped broken.
Live match testing
Paste sample text, see every match and capture group highlighted as you build. Multi-cursor selection maps one-to-one back to the AST.
Visual replace builder
Compose the replacement as draggable pill blocks ($1, literal text, case transforms). No guessing at back-reference syntax per flavor.
Authentic engines
Your Java regex tested against real java.util.regex, Ruby against embedded CRuby, C# against the .NET runtime. No polyfill surprises.
From idea to regex in three steps.
Drag or describe
Pick blocks from the palette and connect them, or type what you want in plain English and let AI generate a starting pattern.
Test and refine
Paste sample text, flip the flavor selector, watch every match light up. Tweak individual nodes in the inspector panel.
Export and integrate
Copy the regex, export a code snippet in your target language, send a railroad SVG to your team docs, or open it straight from VS Code.
A starter library, yours to extend.
50 hand-picked patterns out of the box — email, URL, IPv4/v6, ISO-8601 dates, credit cards, password rules, log parsing, stack trace lines, plus flavor-specific examples for Dart, MySQL, PostgreSQL, shell tools, Python, Java, Ruby, C#, PHP, Perl and Rust — and your own library grows alongside them.
Light, dark, and every shade between.
Auto-follow macOS, pick a curated community theme, or import your own as JSON. Semantic pill colors stay intact — the theme recolors the app chrome, not the regex-kind palette.
@, one or more letters, a dot, at least two more letters, end of line.Drag to compare.
Integrations that don't make you switch apps.
VS Code extension
Right-click any regex, hit Visualize, see the railroad in a side panel. Edit in either place and both stay in step — CodeLens hover shows the plain-English summary inline.
PNG / SVG export
One-click export the railroad diagram for documentation. Vector SVG for crisp docs, raster PNG for pull-request comments.
Roadmap.
What's shipped and what's queued. No secrets, no "coming soon" never-arrives.
Shipped in v1.2
- VS Code extension — right-click a regex literal to open it in RegexPilot, then edit in either place and watch both stay in step. Sessions survive a window reload, and the editor shows delivery status inline (v1.2)
- JavaScript / TypeScript now run on macOS's own JavaScriptCore — the engine Safari uses — instead of a Rust reimplementation. Full ES2024 support, including set notation like
[\w&&[a-z]]and[\p{L}--[a-z]](v1.1) - Visual AST builder — drag-and-drop, railroad diagram, inspector panel
- Breakdown tree — plain-English explanation, bidirectional hover with the rail
- Authentic engines as native sidecars: Java (GraalVM AOT), Ruby (CRuby 3.4), C# (.NET 9 NativeAOT), PHP (static-php-cli), Python (python-build-standalone), Perl (system
perl), Swift (NSRegularExpression), Go (Go stdlib), PostgreSQL (systempsql, Spencer ARE), MySQL (systemmysql, ICU), Dart (systemdart, V8 Irregexp), Elixir (systemelixir, Erlang :re), R (systemRscript, gregexpr perl=TRUE), Shell (system grep / sed) - In-process engines:
JavaScriptCore(JS / TS / Dart — the system framework),regexcrate (Rust / Go / RE2),pcre2-rust(fallback when a system tool is missing) - 21 flavor dispatch with per-flavor syntax support — see the list below
- Match + replace testing with live highlighting, multi-cursor, visual replace builder
- AI chat: OpenAI, Claude, Gemini, DeepSeek, Qwen, Mistral, Groq, OpenRouter, xAI (Grok) — BYO key; plus LM Studio / Ollama / llama.cpp server / LocalAI for offline
- Voice dictation via Whisper Tiny (offline ggml, multilingual)
- Pattern library: 50 curated patterns across 12 flavors, folders, tags, import/export JSON
- Code export for 21 languages (JS, TS, Python, Java, C#, PHP, Ruby, Go, Perl, Rust, Swift, Scala, Kotlin, Groovy, Clojure, Elixir, R, Dart, MySQL, PostgreSQL, Shell)
- PNG / SVG railroad export
- Themes: 9 community palettes + import JSON + system-follow
- Deep links (
regexpilot://), share menu, iCloud Drive-ready file format - AI API keys secured in macOS Keychain — persist across reinstalls, tamper-resistant
v1.3 queued
- Regex+ support — the superset of JavaScript regex by Steven Levithan: atomic groups, possessive quantifiers, subroutines
\g<name>, free-spacing and named-capture-only modes. Unblocked by the JavaScriptCore switch in v1.1, since Regex+ compiles to patterns that need ES2024vmode - Dedicated upgrade prompt when selecting a paid flavor — clear buy or trial CTA, no Settings detour
- Per-flavor language packs (€3 each) — buy just the flavors you need; any pack unlocks system-tool flavors free
- Quick-reference sidebar — always-visible regex cheat-sheet
- Opt-in setting: use system-installed Python / Ruby / Perl / … when present on your machine
- Flavor translator — paste a regex, pick source + target flavor, get a semantic-equivalent rewrite with a portability report
- Step-through debugger — visualise how the engine processes input, backtracking highlighted
- Unit-test builder with
test { match 'foo'; reject 'bar' }-style blocks - Community pattern gallery
- Community theme gallery — share and install color palettes contributed by other users
- Community language packs — translations curated and reviewed by native speakers, hosted in a public GitHub repo
- Test against your own environment — point RegexPilot at a dev container or a running interpreter on your machine, regex goes to that engine
- User-requested — vote on GitHub
Answers, before you ask.
Does a regex work the same in every programming language?
No. We ran 534 test patterns on the real engines of 16 languages: 264 come back different in at least one of them, and only 83 fail with an error — the rest silently return different matches, or none at all. That is why RegexPilot runs your pattern on the actual engine for your target language instead of approximating it in JavaScript.
Which regex flavors does RegexPilot support?
21 flavors: JavaScript, TypeScript, Python, Java, C#, PHP, Ruby, Go, Perl, Rust, Scala, Kotlin, Groovy, Clojure, Elixir, R, Dart, Swift, MySQL, PostgreSQL and POSIX shell. Each routes to the real engine its production code uses — CPython, MRI Ruby, GraalVM Java, .NET, PCRE2, RE2 and more.
Does RegexPilot work offline?
Yes. All engines are bundled inside the app and run locally. There is no account, no telemetry and no cloud calls. AI pattern generation is optional — bring your own API key, or run fully offline with LM Studio, Ollama, llama.cpp.
How much does RegexPilot cost?
The visual builder with JavaScript and TypeScript engines is free. A one-time €19 license unlocks all 21 flavors with their authentic engines, AI generation and an unlimited pattern library. No subscription.
Regex you can see.
Free forever for JavaScript & TypeScript. €19 one-time unlocks all 21 flavors with authentic native engines — no subscription. Try every flavor free for 30 days. Free updates throughout v1.x; v2 owners get a 50% upgrade discount.