Smart Transform
One shortcut. Detects what you selected. Transforms it instantly.
Stop opening jwt.io, base64decode.org, epochconverter.com in your browser.
Stop installing five separate extensions for case-conversion, hashing, encoding, and JSON formatting.
See it in action

Select any text in VS Code, press Cmd+Shift+. (Mac) or Ctrl+Shift+. (Windows/Linux), and Smart Transform shows you only the transformations that make sense for what you selected. No menu hunting. No command-name memorizing.
What it can do (at a glance)
Select a JWT → "JWT — decode payload only" → decoded JSON
Select 1747526400 → "Timestamp → ISO 8601" → 2025-05-18T00:00:00.000Z
Select #ff6600 → "Color → hsl()" → hsl(24, 100%, 50%)
Select customerFullName → "Case → snake_case" → customer_full_name
…and 28 more. All from one shortcut.
How it works
When you trigger Smart Transform, the extension scans your selection and runs lightweight detectors. The QuickPick that opens only shows transformations relevant to what you have, ranked by how likely they are to be what you want. Detected content types:
- JWT tokens (header + payload + signature, with expiration hint)
- JSON (valid object, array, or quoted string)
- base64 encoded text
- URL-encoded strings
- Unix timestamps (seconds and milliseconds)
- UUIDs (v1 through v8)
- Hex colors (
#fff, #ff6600, with optional alpha)
- Numbers and identifiers for case conversions
- Plain strings for everything else
| Group |
Transformations |
| JWT |
decode full token, decode payload only (with expiration hint) |
| JSON |
prettify, minify, escape as string, unescape from string |
| Encode / Decode |
base64 ⇄ text, base64 URL-safe encode, URL ⇄ text, HTML escape/unescape |
| Time |
Unix → ISO, Unix → local, Unix → relative, ISO → Unix |
| Case |
camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, Title Case, url-slug |
| Hash |
MD5, SHA-1, SHA-256, SHA-512 |
| Color |
hex → rgb(), hex → hsl() |
| Other |
UUID generate (v4), UUID version/variant info |
32 transformations in v0.1. More added every release — open an issue if there's something you'd use weekly.
Roadmap
Already on the list for upcoming releases:
- XML / YAML — prettify, minify, convert to JSON
- More colors —
oklch(), named CSS colors, color palette suggestions
- CSV ⇄ JSON — quick conversions for one-off data work
- Regex helpers — explain a regex in plain English, test against the selection
- More hashes — bcrypt verify, HMAC variants
- Repeat last — tap the shortcut twice to re-run the previous transformation
Vote on these (or suggest new ones) by opening an issue.
Keyboard shortcut
- Mac:
Cmd+Shift+.
- Windows / Linux:
Ctrl+Shift+.
- Right-click menu: when you have a selection, "Smart Transform: Transform Selection" appears in the context menu.
You can rebind it from Keyboard Shortcuts — search for Smart Transform: Transform Selection.
Settings
| Setting |
Default |
What it does |
smartTransform.defaultAction |
replaceInPlace |
What to do with the result: replaceInPlace, openNewDocument, or copyToClipboard. |
smartTransform.showAllTransformations |
false |
Show every transformation in the picker, not just the ones detected as relevant. |
JWT decoding always opens in a new tab (because you want to read the payload, not replace your token with it). Everything else respects your default action.
Why this exists
Most editor utilities for these tasks are either single-purpose extensions (one for JWT, one for base64, one for case conversion) or web tools that pull you out of your flow. Smart Transform collapses them into one shortcut that knows what you selected.
No remembering command names. No tab-switching. No five-extension bloat.
Contributing
PRs welcome — the architecture makes adding a new transformation a 15-line file.
- Add
src/transforms/yourTransform.ts exporting a Transformation.
- Register it in
src/transforms/index.ts.
- If it needs a new detection kind, add it to
src/detect.ts and transforms/types.ts.
See vsc-extension-quickstart.md for the development setup.
License
MIT © John Pires
Built for the Destino Dev community.
If this saved you a browser tab, star the repo — it really helps.