A lot of developer work is reshaping text you just copied. Minified JSON that needs formatting, a JWT you want to read, a SQL query you need as an UPDATE, a hex colour you need as a Tailwind class, a URL full of tracking parameters. Usually that means opening a browser tab, finding a tool, pasting, copying the result and pasting again.
L2Cache does it where you already are. Copy something, and a small smart bubble appears next to your cursor with the actions that make sense for what you copied. Pick one, then paste as usual.
If you don't need it, ignore it. The bubble fades after about four seconds (it waits while your pointer is over it), and a click elsewhere or Esc closes it straight away. It never takes keyboard focus from the app you're typing in.
Tools that read your selection and paste on your behalf need macOS Accessibility access and simulated keystrokes. The Mac App Store doesn't allow that for an app like L2Cache, and it's a lot of trust to hand over. L2Cache only reads and writes the clipboard, which it already does as a clipboard manager. You do the copying and pasting. That's the whole trick, and it means no extra permissions.
The bubble remembers the last action you used for each kind of content and puts it first next time. If you always minify JSON rather than format it, minify moves to the front.
Here are some of the content types the bubble knows and a few of the actions for each. The labels are the ones you'll see in the app.
| You copy | Some of the actions |
|---|---|
| JSON | Format JSON · Minify JSON · Repair JSON · Sort JSON keys · Convert to TypeScript interface · Convert to Swift Codable · Convert JSON to Zod Schema · Mask Secret Values |
| JWT | Decode JWT |
| SQL | Format SQL · Extract table names · Parameterize · Convert to SELECT (Preview) · Add WHERE safeguard · Convert to Mermaid ER Diagram |
| CSV and tables | Convert to Markdown table · Convert to JSON array · Convert to SQL Inserts · Transpose Table · Extract headers |
| cURL and HTTP requests | Sanitize Headers & Auth · Extract URL · Extract body · → Fetch (JS) · → Python requests · → URLSession |
| YAML and XML | → JSON · → TOML · Format XML · XML → JSON · XML → Swift Codable |
| Logs | Redact PII & Secrets · Noise Filter · Search Stack Overflow · Search GitHub Issues |
| AWS ARNs | Extract ARN components · Open in AWS Console |
| Docker images | Extract image details · Docker pull command · Docker run command |
| Kubernetes and Terraform | Extract resource identity · Extract container images · Extract resource addresses |
| Colours | Copy as RGB · Copy as HSL · Copy as Tailwind class · Copy as Swift Color · Copy as CSS variable |
| Timestamps | The local and UTC time shown right in the bubble · Convert to ISO 8601 · Convert to Epoch (seconds) · Copy Swift Date() snippet |
| Base64 | Decode Base64 · Inspect Base64 |
| Git URLs | Git clone command · Git add remote origin · Git add submodule |
| Regular expressions | Test Regex, a live tester that opens in the bubble |
| Links | Remove UTM params · Decode URL · Encode URL · Convert to cURL |
Connection strings, MongoDB queries, GraphQL, Markdown and AI prompts have their own actions too. Most actions run locally and instantly. A few, such as Explain error or Explain request, use AI, and anything that makes a network call says so in its label, such as Execute cURL — sends request.
Copy a failing test or an error message, and the bubble can also show Related History: commands you ran for the same error before, and, if a coding agent fixed it earlier, a Previously fixed card with the cause and the fix. See how L2Cache remembers fixes.
The built-in list covers the common cases. For everything else, add your own in Settings › Custom Actions. Each one has a name, the content types it applies to, and one of two kinds of body:
/bin/bash -c, with the copied clip on standard input. Whatever the command prints becomes the new clipboard. Anything that reads stdin works: jq, sed, awk, a script of your own.Choose which content types an action applies to, such as JSON, SQL, logs, Docker images, Git URLs and so on, so it only appears when it's relevant. Choosing Text makes it available for any text clip. A built-in playground lets you try an action on sample input before you save it.
# Shell Command · applies to JSON
# Keep only the "data" field of an API response
jq '.data'
Custom actions appear in the bubble under their own Custom Actions heading, and in the clipboard panel. For a set of ready-made recipes, see custom clipboard actions.
By default the bubble appears for code and developer items: code, JSON, SQL, YAML, XML, cURL and HTTP requests, JWTs, Base64, colours, CSV, system logs, ARNs, Docker images, Kubernetes manifests, Terraform, connection strings, Git URLs and regular expressions. In Settings › Clipboard you can switch it to All content types, which adds links and plain text, pick Selected types only, or turn the bubble off. Every action stays available from the clipboard panel either way.
On the free plan, the first built-in action and the first custom action in each bubble work. The rest need L2Cache Pro, and so does creating and editing custom actions. The free trial includes everything.
L2Cache recognises what you copy and offers the right action at your cursor, on your Mac.
Download L2Cache for Mac