Offline URL encoder and decoder for Mac: keep private links local

URL encoding is easy to treat as harmless. Then someone pastes a support link with customer IDs, a redirect URL, or a token-shaped query value into a random browser tool.

Published May 8, 2026 7 min read By John Sciacchitano

Use an offline URL encoder or decoder when the URL came from work: support tickets, logs, analytics drafts, internal tools, private redirects, customer accounts, staging routes, or product testing. Use a web decoder for public docs, fake examples, and links that are already public.

TeenyTool includes a URL Codec in its Developer category. It has Encode and Decode modes, plus a normal encode style for preserving URL structure and a Full Encode style for copied values that should be encoded more aggressively.

The point is not that URL encoding is hard. The point is that copied URLs often carry more private context than they look like they carry.

Quick decision table

Input Use local Web is fine when
Customer support URL Yes. It may include account IDs, ticket IDs, emails, or internal paths. The URL is copied from public help docs.
Campaign link draft Yes. Draft UTM values and landing pages often reveal unreleased work. The campaign is already public.
Redirect parameter Yes. Nested URLs can contain tokens or private return paths. The redirect target is a toy example.
Search query example Optional. Local is convenient, but privacy may not be the issue. The query is generic and public.

What URL encoding actually changes

Percent-encoding represents characters as percent signs followed by hexadecimal bytes. RFC 3986 defines unreserved characters as letters, digits, hyphen, period, underscore, and tilde. Reserved characters such as ?, &, =, /, and : have structural meaning in different parts of a URI.

That is why URL encoding is a component problem. A complete URL, a path segment, a query key, a query value, and a nested redirect parameter do not all have the same safe character set.

Apple's Foundation documentation makes the same practical point: an entire URL string cannot be percent-encoded with one character set because each URL component has different rules.

How TeenyTool handles URL encoding

The URL Codec source has Encode and Decode modes. In normal Encode mode, TeenyTool uses Foundation's percent-encoding with urlQueryAllowed, which is useful when you want to preserve URL-ish structure while cleaning unsafe characters.

Full Encode mode is stricter. It builds an allowed character set from RFC 3986 unreserved characters: letters, digits, hyphen, period, underscore, and tilde. That is better when the text is a value or component that should not keep URL separators alive.

Decode mode uses Foundation's percent-decoding. If decoding fails, the current source falls back to the original input instead of pretending it understood something it did not.

Normal Encode vs Full Encode

Mode Best for Risk if misused
Encode URLs or query-style text where you want to preserve structure. Reserved separators may remain, which is not what you want for a nested value.
Full Encode Copied values, nested redirect URLs, or text that will become one URL component. A whole URL becomes harder to read because structural characters are encoded too.
Decode Inspecting a percent-encoded URL, route, query, or copied parameter. Decoded output can reveal secrets. Treat it like the original data.

Workflow for copied links

  1. Open teenytool from the menu bar.
  2. Search for "URL" or open the Developer category.
  3. Choose URL Codec.
  4. Select Encode, Full Encode, or Decode.
  5. Paste the copied URL or component.
  6. Copy the output from the right panel.

If URL work is part of your debugging flow, favorite URL Codec with JSON Formatter, Base64 Codec, JWT Decoder, Hash Generator, String Escape, and Regex Tester. TeenyTool supports up to 12 favorites and per-tool shortcuts for favorite tools.

When TeenyTool is not enough

Use a browser or dedicated web platform when you need to validate a live redirect chain, test real analytics collection, inspect canonicalization on a deployed page, or share a campaign-builder workspace with a team.

Use a script or test suite when URL encoding is part of production behavior. A menu bar tool is good for inspection and handoff. Source code should own repeatable application logic.

The local tool belongs in the human loop: read the link, decode a parameter, encode a value, copy the result, and get back to the task.

Related local utility habits

URL encoding often sits next to Base64, JSON, and color-value work. You decode a query parameter, find a Base64 payload, format JSON, then paste a color or screenshot into a ticket. Those are all tiny jobs, but the inputs are often private.

The companion TeenyColor guide to copying color codes on Mac covers the design side of the same handoff problem. The TeenyApps hub on Mac design handoff utilities connects the broader workflow.

Common questions

Is TeenyTool's URL Codec offline?

Yes. URL encoding and decoding run locally in the Mac app. TeenyTool's normal network exceptions are license validation, update checks, IP Address, and DNS Lookup.

Should I encode a whole URL or only a query value?

Encode only the component that needs encoding when possible. A full URL, path segment, query key, and query value have different allowed characters.

When is an online URL decoder safe enough?

Use an online decoder for public docs, fake examples, or already-public links. Keep internal URLs, customer IDs, tokens, redirects, and draft campaign links local.

Sources checked

Encode private URLs without uploading them.

teenytool is a $14.99 Mac menu bar toolbox with URL Codec, JSON Formatter, Base64 Codec, JWT Decoder, Hash Generator, String Escape, Regex Tester, and more.