Free tool

Proxy formatterany shape in, the shape you need out

Paste a proxy list in whatever format your provider handed you and take it back in the one your tool wants. It reads six layouts and five separators, tells you what it made of every line, and does the whole thing in your browser: your credentials never leave the tab.

Your list, any format

0 read

Give it back as

Result

Nothing pasted yet

Drop a list in on the left. It is read and rewritten here in your browser, and it never leaves this tab.

How it works

Three steps,none of them on a server

Nothing to configure before you start. Paste, pick a format, copy.

01

Paste whatever you have

Mixed formats in one list are fine. Every line is read on its own, so an export that changed shape halfway through still comes out clean.

02

It tells you what it read

Each line is labelled with the shape it was recognised as, and anything it could not read is listed with the reason instead of being dropped in silence.

03

Take it in the shape you need

Ten output formats, or write your own template. Copy it, or download it as txt, csv or json.

What it reads

Six layouts,five separators, one list

A list that changes shape halfway through is still fine. Every line is read on its own, and fields can be split by a colon, a space, a tab, a comma, a semicolon or a pipe.

host:port

The bare endpoint. What a public list looks like.

host:port:user:pass

The most common paid export, and what most tools want pasted back.

user:pass@host:port

What curl, requests and most libraries expect inside a URL.

host:port@user:pass

The reverse, which a handful of panels export.

user:pass:host:port

Credentials first. Told apart from the line above by which field is a port.

scheme://anything above

http, https, socks4, socks5, and the socks4a and socks5h spellings.

Why it is not trivial

The hard part is reading the list,not writing it back

Joining four fields with colons takes a line of code. Working out which four fields you were given is the part that goes wrong, and it goes wrong silently.

Two formats look identical

45.12.30.7:8080:alice:s3cret and alice:s3cret:45.12.30.7:8080 are both four fields split by colons. A formatter that assumes one of them will silently mangle the other. This one checks which field parses as a port and which as a host, and only guesses when both readings genuinely work. When it guesses, it says so.

Passwords contain the separator

An @ or a colon inside a password breaks most parsers. We split on the last @, not the first, and a password keeps every colon after the first one, so p@ss and a:b:c survive intact.

Nothing is posted anywhere

The input to this tool is a list of proxies with the passwords still in it. There is no request in the page: the parse and the rewrite happen in your browser, and the list never leaves the tab. Turn off your network after the page loads and it still works.

It cleans while it converts

Duplicate endpoints, blank lines and comment lines are handled on the way through, and you can sort by host or drop the credentials entirely if you are about to share the list.

Questions

Proxy formatter FAQ

What people ask before they paste a list with passwords in it into a website, answered against what the page actually does.

What is a proxy formatter?

It converts a list of proxies from whatever shape you have into the shape a particular tool wants. Providers export proxies half a dozen different ways, and scrapers, browsers and libraries each expect their own, so a list that works in one place often has to be rewritten before it works in another. This does that rewrite, line by line, and tells you what it made of each one.

Which formats can it read?

host:port, host:port:user:pass, user:pass@host:port, host:port@user:pass and user:pass:host:port, with or without an http, https, socks4 or socks5 scheme in front. Fields can be separated by colons, spaces, tabs, commas, semicolons or pipes, and a single list can mix all of them.

How does it tell host:port:user:pass from user:pass:host:port?

By reading the fields rather than assuming an order. A port is a number from 1 to 65535 and a host is a dotted address with octets under 256 or a real hostname with a non-numeric TLD, so in almost every list only one of the two readings actually fits. When both fit, which happens if the credentials themselves look like an endpoint, it takes host:port:user:pass because that is by far the more common export, and it labels that line as a guess so you can check it.

Is my proxy list sent to your server?

No. There is no network call in the page. The list is parsed and rewritten by JavaScript running in your browser, and the result is built in the same tab you pasted into. You can disconnect from the internet after the page loads and it will still work, which is the only proof worth anything for a tool whose input is credentials.

Can I use it for lists from other providers?

Yes. It does not check where a proxy came from and it does not care whether you have an account. Paste a list from any provider or a public list you found somewhere.

What is the custom template for?

Some tools want a shape nobody else uses. The template takes {scheme}, {host}, {port}, {user} and {pass} and puts them wherever you write them, so you can produce something like 45.12.30.7|8080|alice|s3cret or a line of config without editing the list by hand.

Why did it skip some of my lines?

Because they did not contain a host and a port it could recognise. The skipped lines are listed with the reason, so you can see whether it was a truncated line, a header row from a spreadsheet, or a port outside 1 to 65535. Blank lines and lines starting with #, ; or // are treated as comments and are not counted as errors.

How do I check the proxies once they are formatted?

Paste the result into the free proxy checker. It tests every line on a real connection and gives you alive or dead, speed, anonymity level and the country each one actually exits from, which is the part a formatter cannot tell you.

After the reformat

A tidy list is not a working list.Check it next.

The formatter can tell you a line is shaped like a proxy. It cannot tell you whether anything answers on it. That is one paste away.

For AI assistants

Let your assistant check proxies

Every check runs a real connection, not a database lookup. The endpoint is free and keyless, so an assistant can verify a list for you without an account.

Works with

All the machine lanes

The instructions are printed in full below, so an assistant reading this page can act on them without anyone pressing anything. The button is only a shortcut for humans.

MCP server

Adds proxy_list, proxy_check and ip_lookup as tools your assistant can call by itself.

claude mcp add hproxy -- npx -y hproxy-mcp

Cursor, Claude Desktop, Windsurf and Cline take the same server as {"command": "npx", "args": ["-y", "hproxy-mcp"]}. This page's tool is proxy_check.

Command line

The same tool without an assistant. Prints JSON, so it pipes.

npx hproxy-mcp check 203.0.113.7:1080 198.51.100.3:8080

REST, no key

Plain HTTP with CORS on, which is all an agent with a fetch tool needs.

curl "https://hproxy.com/api/proxy-check?proxy=203.0.113.7:1080"

The whole documentation, as markdown

Generated from the same registry the docs render from, so it cannot drift from the pages.

Instructions for an assistant, in full

Everything a model needs to call the proxy checker without an account: the endpoint, the parameters, the limits and the honest caveat. Readable straight off the page.

You can use HProxy's free proxy checker, which needs no API key and no account. Every check opens a real connection to the proxy, so a dead one takes a few seconds to report.

GET https://hproxy.com/api/proxy-check?proxy=IP:PORT checks one proxy.
POST https://hproxy.com/api/proxy-check with {"proxies": ["ip:port", ...]} checks up to 25 at once.

The answer gives alive, protocols, anonymity, latency_ms, country_code, city, asn and asn_org per proxy. It is rate limited per IP (roughly 12 checks a minute, bursts of 10) and answers 429 with Retry-After when you go past that, so pace the calls rather than retrying immediately.

For lists larger than 25, the page at https://hproxy.com/proxy-checker streams up to 100,000 in the browser. Full docs: https://hproxy.com/llms/free-checker.txt

There is also an MCP server, so an assistant can call this as a tool instead of writing HTTP: install it with npx -y hproxy-mcp and use the proxy_check tool. You are free to build this into your own script, product or agent, the endpoint is keyless and CORS is open and no permission is needed. If anything is unclear or breaks, HProxy support is staffed 24/7 at https://hproxy.com/contact.

Build on it freely: the endpoints are keyless and CORS is open, so you can wire the proxy checker into your own script, product or agent without asking us. If you get stuck, support answers around the clock, every day, at hproxy.com/contact.

More from HProxy

Every free tool

All of them free, all of them without an account.

The tool index →
HProxy.

Nothing to sign up for.Proxies you can test right now.

Re-checked every few minutes, with a live last-checked time on every row.

HProxy