Back to blog

    June 6, 2026

    WordPress malware removal: what it actually costs and what's in the price

    You woke up to a Google warning on your site, a flood of weird Japanese pharma pages in search results, or a customer emailing to ask why your contact form is redirecting to a sketchy crypto site. Now you're trying to figure out who to call and what a fix actually costs. The pricing you'll find online ranges from "free" to "five figures," and that gap exists for a real reason.

    Here's an honest breakdown of what's out there, what each tier actually does, and what you're getting when a pro engagement runs $997 and up.

    The pricing landscape, from free to enterprise

    When you start searching, you'll run into roughly four tiers:

    Free plugin scans ($0). Wordfence free, Sucuri SiteCheck, MalCare's free tier. These run pattern-matching against known malware signatures. They're useful for telling you something is wrong. They are not useful for telling you everything that's wrong, and they don't remove anything serious on their own.

    Hosting provider "cleanup" add-ons ($50–$300). Your host — Bluehost, SiteGround, GoDaddy — offers to clean the site for a flat fee, usually through a partner like Sucuri or SiteLock. This is automated scanning plus a junior tech replacing infected files with clean copies from a repository. Fast, cheap, and often incomplete.

    Boutique incident response ($500–$2,000). Independent specialists and small firms like Thewizrdz. Human eyes on the site, manual forensic review, persistence eradication, hardening. This is where most small businesses actually solve the problem.

    Enterprise IR ($5,000+). Firms like Mandiant or CrowdStrike. Legal-grade forensic reports, chain-of-custody documentation, regulatory compliance work. If you're a 200-person company with HIPAA or PCI exposure, this is your tier. If you're a 12-person contractor in Riverside, it isn't.

    Most small businesses get burned by the second tier — the $200 hosting cleanup that "works" for a week and then the site re-infects. Let's talk about why.

    Why the cheap cleanup fails

    The fundamental problem with automated, low-cost cleanups is they treat symptoms instead of finding the persistence mechanism — the thing the attacker left behind to get back in after you clean up.

    A real WordPress compromise usually has three layers:

    1. The payload. The visible bad stuff: spam posts, redirects, injected JavaScript, phishing pages.
    2. The dropper. Files that re-create the payload if you delete it.
    3. The backdoor. The way the attacker gets back in. Often a modified core file, a fake plugin, a malicious admin user, a webshell hidden in /wp-content/uploads/, or a cron job that re-downloads everything from an external server.

    A $200 automated cleanup finds and removes layer 1. Sometimes layer 2. It almost never finds layer 3, especially when the backdoor is novel or obfuscated.

    I worked on a site recently where the previous contractor — a competent web developer, not a hack — had "cleaned" the site twice. Each time, the malware came back within days. When I got in, the backdoor was a single innocuous-looking PHP file in the uploads directory that was watching for a specific HTTP header. When the attacker sent that header, the file rewrote core WordPress files and re-injected 115+ spam posts. No scanner flagged it because the file itself did nothing malicious until triggered. That's what "self-healing malware" actually means in practice, and it's why automated cleanups fail.

    What's actually in a $997 professional engagement

    Here's the breakdown of what a real incident response looks like and where the hours go. The $997 starting price covers a standard small-business WordPress site (single install, reasonable size, no e-commerce database disaster).

    1. Forensic snapshot (1–2 hours). Before touching anything, I pull a full copy of the site, database, and server logs. This is your "before" picture. If something goes sideways in cleanup, we can roll back. It also gives me evidence to analyze without working on a live, possibly-still-compromised system.

    2. Full file and database scan (2–4 hours). Not just signature matching. File integrity checks against clean WordPress core, plugin, and theme versions. Manual review of recently modified files. Database scan for injected admin users, malicious options entries, spam posts and pages, and hidden content. Log review to identify the initial entry point — usually a vulnerable plugin, weak password, or compromised hosting account.

    3. Persistence eradication (2–4 hours). This is the part that separates real IR from a file replacement. Find every backdoor, every dropper, every scheduled task, every modified .htaccess rule, every malicious cron job. Remove all of them. Verify the site is actually clean by re-scanning, then waiting, then re-scanning.

    4. Hardening pass (1–2 hours). Closing the door so this doesn't happen again. Typical items:

    # wp-config.php additions
    define('DISALLOW_FILE_EDIT', true);
    define('DISALLOW_FILE_MODS', true);
    define('WP_AUTO_UPDATE_CORE', 'minor');
    define('FORCE_SSL_ADMIN', true);
    

    Plus: removing unused plugins and themes (every inactive plugin is still an attack surface), forcing strong passwords for all admin accounts, adding 2FA, restricting /wp-admin/ access where appropriate, fixing file permissions, and adding rules to block direct PHP execution in upload directories.

    5. Post-cleanup monitoring window (14 days included). This is the part most cleanups skip. For two weeks after the engagement, I monitor the site for re-infection indicators. If anything comes back, I deal with it at no extra charge. Most re-infections happen within 7–10 days when a backdoor was missed, so this window is where you find out if the cleanup actually held.

    That's 8–14 hours of skilled work plus a two-week monitoring tail. $997 is not a markup. It's the floor.

    When emergency rush pricing applies

    Standard engagements start within 1–2 business days. Some situations can't wait that long, and rush pricing (typically +50–100%) applies when:

    • Live spam injection is happening right now. Every hour the site stays up, more spam pages get indexed and your SEO recovery gets harder.
    • You're on Google's Safe Browsing blacklist. Your site is showing a red interstitial warning. You're losing every visitor and every sale until it's cleared.
    • Your payment page is compromised. This is a Magecart-style attack where credit card data is being skimmed. This is a regulatory and liability emergency, not a marketing problem.
    • You're being actively extorted. Ransom demands, threats to leak data, defacement with political content.

    In these cases, work starts within hours, not days, and I'll often pull the site offline temporarily while we work — better a maintenance page than a live spam farm.

    What's not included (and what would push the price up)

    To be transparent, the $997 baseline assumes a fairly standard situation. Costs go up when:

    • The site is large (multisite networks, sites over ~10 GB, sites with thousands of posts)
    • WooCommerce or membership data complicates the cleanup
    • There are multiple compromised sites on the same hosting account (common — attackers pivot)
    • You need a written incident report for insurance, legal, or compliance purposes
    • You need help with reputation recovery: Google Search Console review requests, blacklist removal across multiple providers, search result cleanup

    Most of these add $300–$1,500 depending on scope. I'll always quote in writing before doing the work.

    What you should actually do next

    If your site is currently infected, the order of operations is:

    1. Don't panic-delete. You'll destroy evidence and possibly miss the backdoor.
    2. Take the site offline (or put up a maintenance page) if it's actively serving malware or spam.
    3. Change every password that could touch the site: WordPress admin, hosting cPanel, FTP/SFTP, database, and any email accounts associated with admin users.
    4. Get a real assessment. Free scanners will tell you if something's wrong. They won't tell you the whole story.

    If you're trying to decide between the $200 hosting cleanup and a professional engagement, here's the honest math: if the cheap cleanup works, you saved $800. If it fails — and on a serious compromise it usually does — you've paid $200, lost another week of business, taken further SEO damage, and now you're paying the $997 anyway. The cheap option is a bet, not a fix.

    If you want a straight answer on what your situation looks like and what it'll cost to actually fix, you can start here on the malware removal page or read the full case study on the self-healing backdoor I mentioned earlier. Initial assessment is free, and the quote you get is the quote you pay.

    Need help with what this post covers? I do this for a living.

    Book a free 15-min site audit