| Crates.io | wordpress-audit |
| lib.rs | wordpress-audit |
| version | 1.0.0 |
| created_at | 2025-11-25 19:10:53.915271+00 |
| updated_at | 2025-11-25 19:10:53.915271+00 |
| description | WordPress audit tool - detects outdated core, plugins, and themes |
| homepage | |
| repository | https://github.com/robdotec/wordpress-audit |
| max_upload_size | |
| id | 1950307 |
| size | 119,047 |
A fast, safe Rust CLI tool for auditing WordPress websites. Detects WordPress core version, themes, and plugins, then checks them against the latest versions from WordPress.org.
Download from GitHub Releases:
| Platform | Architecture | File |
|---|---|---|
| Linux | x86_64 | wordpress-audit-linux-x86_64.tar.gz |
| Linux | x86_64 (static) | wordpress-audit-linux-x86_64-musl.tar.gz |
| Linux | ARM64 | wordpress-audit-linux-aarch64.tar.gz |
| macOS | Intel | wordpress-audit-macos-x86_64.tar.gz |
| macOS | Apple Silicon | wordpress-audit-macos-aarch64.tar.gz |
| Windows | x86_64 | wordpress-audit-windows-x86_64.zip |
cargo install wordpress-audit
git clone https://github.com/robdotec/wordpress-audit
cd wordpress-audit
cargo build --release
# Basic scan
wordpress-audit example.com
# JSON output
wordpress-audit example.com -o json
# Sort by status (outdated first)
wordpress-audit example.com --sort status
# Scan local WordPress installation
wordpress-audit localhost:8080 --allow-private
WordPress Audit v1.0.0
by Robert F. Ecker <robert@robdotec.com>
┌────────┬──────────────────────┬─────────────────┬────────┬──────────┐
│ Type ┆ Name ┆ Version ┆ Latest ┆ Status │
╞════════╪══════════════════════╪═════════════════╪════════╪══════════╡
│ Core ┆ WordPress ┆ 6.8.1 ┆ 6.8.3 ┆ Outdated │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ Theme ┆ flavor-flavor ┆ 1.2.0 ┆ 1.2.0 ┆ Ok │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ Plugin ┆ contact-form-7 ┆ 5.8.1 ┆ 6.0.5 ┆ Outdated │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ Plugin ┆ woocommerce ┆ 9.0.0 ┆ 9.0.0 ┆ Ok │
└────────┴──────────────────────┴─────────────────┴────────┴──────────┘
| Option | Description |
|---|---|
-o, --output <FORMAT> |
Output format: human (default), json, none |
--sort <ORDER> |
Sort order: type (default), name, status |
--allow-private |
Allow scanning localhost and private IPs |
-h, --help |
Print help |
-V, --version |
Print version |
<meta name="generator" content="WordPress X.Y.Z">/feed/ containing wordpress.org/?v=X.Y.Z/readme.html containing version/wp-json/ with WordPress namespaceswordpress_* or wp-* prefixes/wp-content/themes/{slug}/ URLs in stylesheets?ver= query parameters/wp-content/plugins/{slug}/ URLs/wp-content/mu-plugins/{slug}/ (must-use plugins)?ver= query parametersThe tool identifies non-semantic versions:
| Version Type | Display |
|---|---|
| Semantic | 1.2.3 |
| Unix timestamp | (timestamp:1748271784) |
| Git hash | (hash:569ab56) |
| Date-based | 20200121 |
By default, requests to internal/private addresses are blocked:
127.0.0.1, ::1, localhost)10.x, 172.16-31.x, 192.168.x)169.254.x including cloud metadata 169.254.169.254)fc00::/7) and link-local (fe80::/10)Use --allow-private to scan local WordPress installations:
wordpress-audit localhost:8080 --allow-private
wordpress-audit 192.168.1.100 --allow-private
Only http and https schemes are allowed. File, FTP, and other schemes are rejected.
use wordpress_audit::{Scanner, Analyzer};
#[tokio::main]
async fn main() -> wordpress_audit::Result<()> {
let scanner = Scanner::new("https://example.com")?;
let scan = scanner.scan().await?;
let analysis = Analyzer::new(scan).analyze();
println!("WordPress: {}", analysis.wordpress.version);
println!("Outdated: {}", analysis.outdated_count());
Ok(())
}
use wordpress_audit::Scanner;
let scanner = Scanner::builder("localhost:8080")
.allow_private(true)
.build()?;
MIT License - see LICENSE for details.