Fast turnaround. No long contracts.
Website Code Audit and Technical Report
An independent read of your codebase, delivered as a written report you can hand to any developer — every finding verified by a human before it reaches you.
Tooling does the sweeping; I do the judging. Static analysis is fast and noisy, so every finding is reviewed by hand before it reaches your report — an audit full of false positives is worse than no audit, because it burns your developer's trust.

Sound Familiar?
What I'll Do
How the audit is actually produced
Static analysis first. Dependency and CVE scanning, linting, type checking, dead-code and complexity analysis. This is broad, fast, and generates a lot of noise — including things that are technically true but irrelevant to your codebase.
Manual review second. I read the areas that matter: authentication and session handling, anything touching payments or personal data, database access patterns, and the parts of the codebase that change most often. Tools do not understand your business logic; most genuinely serious findings come from this stage.
False-positive review third. Every automated finding is checked before inclusion. Anything I cannot verify is either dropped or explicitly labelled as unconfirmed, with the reason. You should never have to guess which findings are real.
Languages and stacks I audit
- PHP — WordPress, WooCommerce, Laravel, and bespoke applications.
- JavaScript / TypeScript — React, Next.js, Vue, Node backends.
- Python — Django and Flask applications.
- Database layers — schema design, query patterns, indexing, and injection risk.
- Infrastructure as code and CI config, where it forms part of the security surface.
- If your stack is not listed, ask — the method transfers, but I will tell you honestly if it is outside what I can review well.
Access, confidentiality and scope
- Repository access — read-only is sufficient. A zip of the codebase works if you would rather not grant repo access.
- NDA available and signed before access if you want one. Ask and it is arranged, no friction.
- Credentials and secrets found during the audit are reported to you privately and never included in the deliverable document.
- Nothing is run against production without explicit written agreement.
- Scope is agreed up front by repository size and the areas you care about. Very large monorepos are audited by module rather than wholesale, so you are not paying for a shallow pass over everything.
- Findings are not shared or reused, and the report is yours.
What the report contains
A typical table of contents:
- 1. Executive summary — plain-language, for a non-technical reader.
- 2. Risk register — every finding, ranked by severity and effort to fix.
- 3. Security — dependency CVEs, injection and auth issues, secret handling.
- 4. Performance — slow queries, N+1 patterns, render bottlenecks.
- 5. Dependency health — what is unmaintained, outdated, or duplicated.
- 6. Tech debt and architecture — where complexity is concentrated and what it will cost you.
- 7. Test coverage and type safety — what is protected and what is not.
- 8. Prioritised remediation plan — ordered by risk against effort, so it doubles as a work queue.
- 9. Appendix — method, tool versions, and anything explicitly out of scope.
What a single finding looks like
Every entry carries a severity, the evidence behind it, and a concrete fix — not just a description of a category of problem. Illustrative example:
- 1
Severity: High — unparameterised query in order lookup
Evidence: `app/Models/Order.php:142` interpolates `$_GET['ref']` directly into a SQL string. Reachable unauthenticated from the order-tracking page. Impact: SQL injection against the orders table, which holds customer names and addresses. Fix: replace with a parameterised query or the ORM's binding API; roughly a 15-minute change plus a regression test. Confidence: confirmed by manual review, not tool-reported only.
Code audit questions
Is this just an AI-generated report?
No. Automated tooling is used for the sweep because it is good at breadth, but every finding is reviewed by a human before it reaches you, and anything unverifiable is labelled as such. An unreviewed tool dump is not an audit.
Can I see a sample before committing?
Yes — ask for the redacted sample report and you will get a real one with client details removed, so you can judge the depth before you buy.
Will you sign an NDA?
Yes, before any access is granted. Say so in your first message and it is handled.
Do you fix the issues too, or only report them?
Either. The report is written so any competent developer can act on it, and remediation is available as separate work if you would rather I did the top items myself.
How long does an audit take?
A small-to-mid codebase is typically a few days. Large or unfamiliar systems take longer, and the scope and timeline are agreed before starting rather than discovered along the way.
Related articles
Deep-dive guides on the same topic.

Writing Unit Tests for Code You Didn't Write
You inherited a codebase with no tests. Now there's a bug, and you need to fix it without breaking everything else. Here's the pragmatic strategy for adding tests to legacy code without rewriting everything.

Auditing 30 Years of Legacy Web Infrastructure: What I Found
A real audit of a 30-year-old business with sprawling sites, domains, and forgotten cloud services. The waste I uncovered, what I’m fixing, and how to run an audit yourself.

Technical SEO Audit Checklist (25 Checks That Matter)
A complete technical SEO audit checklist. Work through these 25 items and you’ll find the hidden issues blocking your rankings.
Ready to Get This Fixed?
Send me a message and tell me what's going on. I'll take a look and let you know how I can help.