Proxifier Profile Editor

Edit Proxifier v2/v3 .ppx profiles with structured forms

Loading tool…

About Proxifier Profile Editor

Proxifier Profile Editor opens a .ppx profile in structured forms — proxies, chains, options and rules — and writes a new .ppx back out. It reads both the v2 and the v3 layout, preserves the root attributes that say which Proxifier build the file targets, and checks every rule reference before it produces the download.

A .ppx file is a small XML document with four parts: an Options block, a ProxyList, a ChainList and a RuleList. Almost every routing decision lives in the last one, because rules are evaluated from the top of the list downwards and the first enabled rule that matches a connection decides its fate. Editing that order inside the application means dragging rows through a dialog; editing the file as text means keeping numeric proxy and chain ids in sync by hand, and a single stale id turns a proxied rule into an import error. This editor sits between the two: the same fields the file actually has, plus a validation pass that refuses to export a rule pointing at an id that is no longer in the profile.

How to use this developer tool

  1. Upload the .ppx you already use, or start from a blank profile if you are building one from scratch.
  2. Set the format section first. The v3 / v2 switch decides whether the system-services options are written at all, and the platform, product id and minimum version fields are the root attributes Proxifier reads before it accepts a file.
  3. Add each proxy with its type, address and port, plus a username and password where the upstream requires authentication. Every proxy keeps a numeric id, and that id is what rules and chains refer to.
  4. Create a chain only when traffic has to traverse more than one hop: tick the proxies it should use, then order the hops with the arrows beside the chain order.
  5. Add rules and move them with the arrows so specific rules sit above broader ones, with a single catch-all rule at the bottom of the list.
  6. Press validate and download .ppx. The export is blocked when a rule points at a proxy or chain that is not in the profile, so a refused download is a real finding rather than a glitch.

Worked example: a v2 profile that proxies everything

This is a profile exported from Proxifier v2, abbreviated to one proxy and one rule. Its single rule sends every connection to proxy 100, which also drags loopback and LAN traffic through the upstream. The output is what the editor writes after the v3 switch is selected, the minimum version is raised to 300, and a Direct rule is moved above the catch-all.

Uploaded profile (v2)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProxifierProfile version="101" platform="Windows" product_id="2" product_minver="200">
    <Options>
        <Resolve>
            <AutoModeDetection enabled="false"/>
            <ViaProxy enabled="true">
                <TryLocalDnsFirst enabled="false"/>
            </ViaProxy>
            <ExclusionList ExcludeSimpleHostnames="true" ExcludeLocalhost="true" ExcludeSelfHostname="true" ExcludeLocalDomain="true"></ExclusionList>
        </Resolve>
        <Encryption mode="disabled"/>
        <HttpProxiesSupport enabled="true"/>
        <HandleDirectConnections enabled="false"/>
        <ConnectionLoopDetection enabled="true"/>
        <BlockUDP443 enabled="false"/>
    </Options>
    <ProxyList>
        <Proxy id="100" type="SOCKS5">
            <Address>proxy.example.com</Address>
            <Port>1080</Port>
            <Options>48</Options>
            <Authentication enabled="true">
                <Username>alice</Username>
                <Password>s3cret</Password>
            </Authentication>
        </Proxy>
    </ProxyList>
    <ChainList/>
    <RuleList>
        <Rule enabled="true">
            <Name>Default</Name>
            <Action type="Proxy">100</Action>
        </Rule>
    </RuleList>
</ProxifierProfile>
Downloaded profile (v3)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProxifierProfile version="101" platform="Windows" product_id="2" product_minver="300">
    <Options>
        <Resolve>
            <AutoModeDetection enabled="false"/>
            <ViaProxy enabled="true">
                <TryLocalDnsFirst enabled="false"/>
            </ViaProxy>
            <ExclusionList ExcludeSimpleHostnames="true" ExcludeLocalhost="true" ExcludeSelfHostname="true" ExcludeLocalDomain="true">*.corp.example.com
            </ExclusionList>
        </Resolve>
        <Encryption mode="disabled"/>
        <HttpProxiesSupport enabled="true"/>
        <HandleDirectConnections enabled="false"/>
        <ConnectionLoopDetection enabled="true"/>
        <ProcessServices enabled="true"/>
        <ProcessOtherUsers enabled="true"/>
        <BlockUDP443 enabled="false"/>
    </Options>
    <ProxyList>
        <Proxy id="100" type="SOCKS5">
            <Address>proxy.example.com</Address>
            <Port>1080</Port>
            <Options>48</Options>
            <Authentication enabled="true">
                <Username>alice</Username>
                <Password>s3cret</Password>
            </Authentication>
        </Proxy>
    </ProxyList>
    <ChainList>
    </ChainList>
    <RuleList>
        <Rule enabled="true">
            <Name>Local</Name>
            <Targets>localhost; 127.0.0.1; 192.168.*.*; *.local</Targets>
            <Action type="Direct"></Action>
        </Rule>
        <Rule enabled="true">
            <Name>Default</Name>
            <Action type="Proxy">100</Action>
        </Rule>
    </RuleList>
</ProxifierProfile>

Three differences are worth reading closely. The v3 switch added ProcessServices and ProcessOtherUsers, which simply do not exist in a v2 file. The minimum version attribute is a separate field and was raised by hand — selecting v3 does not change it for you. And the new Local rule is placed above the catch-all, because the catch-all would otherwise match loopback and LAN addresses first. The password is still plain text in the download.

Rule actions, match fields and version differences

Everything below is what this editor reads and writes. The left column is the control in the form; the middle column is the markup it produces in the file.

Field or actionWhat the editor writesWhat it means for matching traffic
Direct<Action type="Direct"></Action>Matching connections bypass every proxy in the profile and use the normal route.
Proxy<Action type="Proxy">100</Action>Matching connections go through the single proxy whose numeric id is written inside the element.
Chain<Action type="Chain">200</Action>Matching connections traverse every proxy of that chain, in the order the chain lists them.
Block<Action type="Block"></Action>Matching connections are refused; nothing for that target leaves the machine.
Application match<Applications>"Chrome"; com.google.Chrome</Applications>Process name, bundle id or wildcard, separated by semicolons. Omitted from the file when empty, which matches any application.
Target match<Targets>*.example.com; 192.168.*.*</Targets>Hostname, IP or wildcard. A port belongs to the entry itself, as in example.com:443. Omitted when empty, which matches any target.
Rule orderPosition inside <RuleList>Rules are read top to bottom and the first enabled match wins; rules below it are never consulted.
Disabled rule<Rule enabled="false">Kept in the file and in the editor, but skipped while matching.
v3 only<ProcessServices enabled="true"/>Written only while the v3 switch is selected, together with ProcessOtherUsers. The v2 output omits both elements entirely.
Version detectionproduct_minver="300"An uploaded file is read as v3 when it carries this attribute value or either v3-only option element; anything else is read as v2.
Root attributesversion="101" platform="Windows" product_id="2"Copied from the uploaded file and editable. The export refuses to run when platform or version is left empty.

Troubleshooting

The download is refused and the editor reports invalid input, but every field looks filled in.

Why it happens A rule still points at a proxy or chain id that is not in the profile. This survives an upload of a hand-edited file, and it is exactly what the validation pass exists to catch.

Fix Open each Proxy or Chain rule and re-select a target from the dropdown. Note that deleting a proxy or chain inside the editor quietly rewrites the rules that referenced it to Direct, so after a deletion, re-read the rules you expected to stay proxied.

A specific rule you added never takes effect.

Why it happens A broader rule sits above it. A rule with empty Applications and empty Targets matches everything, so anything below a catch-all is dead configuration.

Fix Use the arrows to move the specific rule above the broad one. Read the list as a chain of first-match wins and keep exactly one catch-all, at the bottom.

Proxifier refuses to import the file, or imports it with options missing.

Why it happens The variant switch and the root attributes disagree. Selecting v3 writes the v3-only option elements but leaves product_minver at whatever the file already had, and a profile carrying platform="MacOSX" is not what a Windows install expects.

Fix Export a fresh profile from the Proxifier build you are targeting, compare its four root attributes with yours, and set version, platform, product id and minimum version to match before downloading again.

Loopback or LAN traffic ends up going through the upstream proxy.

Why it happens The catch-all rule matches 127.0.0.1 and 192.168.x.x like any other target. The built-in exclusion switches influence name resolution, not the routing decision a rule makes.

Fix Add a Direct rule above the catch-all whose Targets list covers localhost, 127.0.0.1, your LAN range and any internal suffix such as *.local or *.corp.example.com.

The profile carries working credentials and is about to be shared or saved on a shared machine.

Why it happens Usernames and passwords are written as plain text into the Authentication element, and Save to browser history keeps up to twelve full snapshots in this browser's localStorage.

Fix Before sharing a profile, blank the username and password or turn authentication off, and let the recipient fill in their own. On a machine that is not yours, skip Save to browser history and delete the downloaded file when you are done with it.

When this tool is the right choice

  • Reordering a long rule list so the specific rules sit above the catch-all, with the whole list visible at once.
  • Rewriting a profile a colleague exported so it points at your own proxy address and your own credentials before you import it.
  • Producing a v2-compatible file from a v3 profile, or the reverse, while proxies, chains and rules stay intact.
  • Reading exactly which applications and targets a profile routes, on a machine where Proxifier is not installed.

When to use something else

  • Normalizing a messy list of proxy addresses into one consistent scheme. Proxy Formatter does that first, and its output is what you type into the proxy forms here.
  • Finding out whether those proxies actually answer. Batch Proxy Checker tests reachability and authentication against a list you are authorized to test; this editor never opens a connection.
  • Routing traffic. What you download is configuration only — the installed Proxifier application is what intercepts connections.

Privacy and data handling

The uploaded file is read with the browser's own XML parser, edited as an in-memory object and serialized back to text in this tab; the download is produced from a local blob URL. Nothing is sent to this site, so there is no server-side copy to ask us to delete. Two things still need care. Save to browser history writes a full snapshot of the profile — including any password you typed — into this browser's localStorage, keeping up to twelve entries, so avoid it on a shared or managed machine. And the downloaded .ppx stores credentials as plain text inside the Authentication element: the password encryption selector only writes a mode attribute on the Encryption element, it does not encrypt anything here. Treat the file you download as a secret.

Related developer tools

Frequently asked questions

Can I edit a Proxifier profile without installing Proxifier?

Yes. A .ppx file is plain XML, and this page parses, edits and re-serializes it entirely in the browser. What you cannot do without the application is apply the profile or test that its proxies work.

Does it support both v2 and v3 profiles?

Both. An upload is read as v3 when it carries product_minver="300" or either of the v3-only option elements, and as v2 otherwise. You can flip the switch afterwards: the v3 output adds the system-services and other-users options, the v2 output omits them, and proxies, chains and rules are unchanged either way.

Will my proxy password be uploaded anywhere?

No. Parsing, editing and serialization happen in this tab, and the file is downloaded from a local blob. The password is, however, written as plain text into the downloaded profile, and Save to browser history stores a copy in this browser's localStorage on your own device.

Why does Proxifier reject the file I downloaded?

Check the extension first: the import dialog filters for .ppx, and some browsers append .txt or .xml when saving. After that, compare the four root attributes with a profile exported by your own installation, since a mismatched platform or minimum version is the usual second cause.

Can I convert a Proxifier profile into a ProxyBridge one?

Not automatically, and the two models do not line up. Proxy definitions and Direct, Proxy and Block rules translate by hand into the ProxyBridge Profile Editor on this site, but chains have no equivalent there, and the Proxifier-specific options do not carry over.

What is the Options value on a proxy?

It is a numeric flag Proxifier maintains itself, and the editor keeps it as free text so an uploaded value round-trips unchanged. A proxy you add here starts at 0; leave it alone unless you are deliberately copying a value out of a profile the application exported.

Is this site affiliated with Proxifier?

No. This is an independent editor for the .ppx file format. Proxifier is the product of its own vendor, and that name and any related trademarks belong to their respective owner.