Proxy Formatter

Normalize proxy schemes and address formats

Loading tool…

About Proxy List Formatter

Proxy Formatter normalizes a messy list of proxy addresses into one consistent scheme and ordering, so that a list assembled from several providers can be pasted into a checker, a client configuration, or a script without hand-editing every line.

There is no standard text format for a proxy address. Providers ship host:port:user:pass, others ship user:pass@host:port, and SOCKS entries may or may not carry a scheme at all. The distinction that matters most in practice is socks5 against socks5h: with socks5 the client resolves the hostname locally, with socks5h the proxy resolves it. Mixing the two silently changes which DNS server sees your traffic.

How to use this developer tool

  1. Paste the proxy list, one entry per line, in whatever mixture of formats the providers gave you.
  2. Choose the target scheme, such as http, socks5, or socks5h, that the consuming client expects.
  3. Choose the output layout, either the URL form with credentials in the authority or the colon-separated form.
  4. Format the list and check the count of recognized lines against the count you pasted; unrecognized lines are reported with their line numbers.
  5. Copy the normalized list into your client configuration or into the Batch Proxy Checker.

Worked example: three providers, one list

Each line below came from a different vendor export. The formatter recognizes all three shapes and emits a single scheme and layout.

Mixed input
198.51.100.10:8080:alice:s3cret
socks5://bob:hunter2@203.0.113.24:1080
192.0.2.77:3128
Normalized to socks5h URL form
socks5h://alice:s3cret@198.51.100.10:8080
socks5h://bob:hunter2@203.0.113.24:1080
socks5h://192.0.2.77:3128

The third entry has no credentials, so the authority carries only host and port. Note that forcing every line to socks5h also changed the first two entries' DNS behavior, which is intended here but should be a deliberate choice.

Proxy schemes and what they change

SchemeWho resolves DNSTypical use
httpThe client, before connectingPlain HTTP forward proxies, corporate gateways
httpsThe client, before connectingProxy reached over TLS; not the same as proxying HTTPS traffic
socks5The clientGeneric TCP tunneling where local DNS is acceptable
socks5hThe proxyWhen hostnames must resolve on the far side, avoiding local DNS leaks
socks4 / socks4aClient / proxyLegacy endpoints; no authentication in socks4

Troubleshooting

A line is reported as unrecognized.

Why it happens Most often a stray space, a comment appended after the address, or a password that itself contains a colon, which makes the colon-separated form ambiguous.

Fix Remove trailing comments and surrounding whitespace. For passwords containing a colon or an at sign, use the URL form and percent-encode those characters.

The proxy works in a browser but fails in a script after conversion.

Why it happens The tool expects a different scheme name. Several command-line tools accept socks5h while some libraries only know socks5 plus a separate remote-DNS flag.

Fix Check the client's documentation for the exact scheme string it parses, then re-run the formatter with that scheme selected.

Credentials with special characters are rejected downstream.

Why it happens In URL form the authority is parsed by URL rules, so @, :, / and # inside a password terminate the field early.

Fix Percent-encode the password, or switch the output to the colon-separated form if the consuming tool accepts it.

Duplicate entries survive the conversion.

Why it happens Two lines that normalize to the same endpoint can look different in the source, for example one with a scheme and one without.

Fix Normalize first, then use the List Compare tool to find and remove duplicates before running a batch check.

When this tool is the right choice

  • Merging proxy lists from several providers into one file a single client can read.
  • Switching a whole list between socks5 and socks5h deliberately, to control where DNS resolution happens.
  • Preparing a clean list before running the Batch Proxy Checker, so failures reflect the proxy and not a parse error.
  • Converting an inherited configuration to the URL form so it can be stored in an environment variable.

When to use something else

  • Testing whether the proxies work. Formatting is purely textual; use the Batch Proxy Checker for connectivity.
  • Discovering or obtaining proxies. The tool only rewrites addresses you already have and are authorized to use.
  • Storing credentials. Nothing is saved here, and a proxy list with passwords belongs in a secret manager.

Privacy and data handling

Parsing and rewriting happen entirely in this browser tab, and the list is not sent anywhere. Proxy entries usually embed a username and password, which is exactly the kind of credential that should not be pasted into a tool you have not checked. Nothing here is stored or logged, but remember that the formatted output on screen still contains those secrets.

Related developer tools

Frequently asked questions

What is the practical difference between socks5 and socks5h?

With socks5 your machine resolves the hostname and sends the resulting IP address to the proxy. With socks5h the hostname is sent as text and the proxy resolves it. If you are using a proxy to change which network sees your traffic, socks5 still exposes every lookup to your local resolver.

Does the tool verify that an address is reachable?

No. It only parses and rewrites text. A perfectly formatted entry can point at a host that no longer exists, which is why a format pass and a connectivity check are separate steps.

Which output form should I choose?

Use the URL form when the consuming tool accepts a full proxy URL, which most modern clients and environment variables do. Use the colon-separated form for older tools and for provider dashboards that expect host:port:user:pass.

Can it handle IPv6 proxy addresses?

Yes. In URL form an IPv6 literal must be wrapped in square brackets so the colon separating host and port stays unambiguous, and the formatter emits that form.

Are my proxy credentials sent anywhere?

No. The parsing runs in this tab and nothing is transmitted or stored. Treat the on-screen output as sensitive anyway, and clear the field when you are finished.

Why does the count of output lines differ from my input?

Blank lines and lines that could not be parsed are excluded, and the tool reports how many were dropped along with their line numbers so you can fix them rather than silently losing entries.