Go httpx vs Python httpx: The Name Conflict That Breaks Recon Workflows

If you’ve ever run httpx and received errors that make no sense—this article is for you.
The issue is not your command, not Kali Linux, and not a broken installation.
The real problem is simple but subtle: two completely different tools share the same name.
Contents
What Is httpx? (Actually, Two Different Things)
1. Go-based httpx (ProjectDiscovery)
This is the tool used by security researchers and bug bounty hunters.
- Purpose: HTTP probing, reconnaissance, enumeration
- Language: Go
- Installation:
go install github.com/projectdiscovery/httpx/cmd/httpx@latest
- Common flags:
-threads-follow-redirects-status-code-title
This is the httpx most recon guides refer to.
2. Python httpx
This is not a recon tool.
- Purpose: HTTP client library (alternative to
requests) - Language: Python
- Installation:
pip install httpx
- Used inside Python scripts
- Also installs a small CLI named
httpx
Same name. Completely different purpose.
Why This Breaks on Kali Linux (and Others)
Linux decides which command runs using the PATH variable.
When you type:
httpx
The system searches directories in PATH order.
If this comes first:
/usr/bin/httpx
Then Python’s httpx runs.
If this comes first:
~/go/bin/httpx
Then Go’s httpx runs.
There is no warning. No error. Just the wrong tool executing.
Common Symptoms of the Conflict
If you see any of these, you’re hitting the name collision:
flag provided but not definedunknown option: -threads-m GETnot recognizedhttpxbehaves like a simple URL fetcher
Example error:
flag provided but not defined: -m
This happens because Python httpx does not support Go httpx flags.
Always Identify Which httpx You’re Using
Before debugging anything, run:
which httpx
Then:
httpx -h
Go httpx help starts with:
httpx is a fast and multi-purpose HTTP toolkit
Python httpx help starts with:
Usage: httpx [OPTIONS] URL
If you don’t check this, you’re guessing.
Proper Solutions (Pick One)
Solution 1: Use Full Path (Safest)
~/go/bin/httpx -l targets.txt -threads 100
This avoids PATH issues completely.
Solution 2: Fix PATH Priority (Recommended)
Put Go binaries first:
export PATH="$HOME/go/bin:$PATH"
Persist it:
echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Verify:
which httpx
Expected output:
/home/user/go/bin/httpx
Solution 3: Rename the Go Binary (Clean Setup)
mv ~/go/bin/httpx ~/go/bin/httpx-go
Usage:
httpx-go -l subdomains.txt
This is common in professional recon environments.
Solution 4: Remove Python CLI (Advanced Users Only)
pip uninstall httpx
⚠️ Do this only if no Python tools depend on it.
What Not to Do
- Don’t blindly reinstall tools
- Don’t copy flags from outdated blogs
- Don’t assume Kali is broken
- Don’t mix Python and Go CLIs unknowingly
This is a name-resolution problem, not a software bug.
Best Practices for Recon Tooling
- Always run
which toolname - Always read
tool -h - Hardcode full paths in automation
- Avoid CLI name collisions
Professional pipelines never rely on ambiguous binaries.
Final Thoughts
The httpx conflict is a classic example of what happens when ecosystems collide:
- Same name
- Different purpose
- One PATH
Once you understand this, the issue disappears permanently.
Control your PATH—or control your tools.