Free Tool — Live Now

Free Solidity Smart Contract Security Scanner

Detect reentrancy, access control flaws, oracle manipulation, flash loan vectors, and 20+ vulnerability patterns in your Solidity smart contracts. Instant results, no signup required.

20+
Vulnerability Patterns
10
Attack Categories
<5s
Scan Time
$0
Basic Scan Cost

Why Every Solidity Developer Needs a Security Scanner

Smart contract vulnerabilities have caused billions of dollars in losses across DeFi. The DAO hack, the Parity wallet freeze, the Wormhole bridge exploit, countless flash loan attacks — each one exploited a bug that automated scanning could have flagged before deployment.

The problem is that most security audit firms charge $5,000 to $50,000+ per audit, with wait times measured in weeks. That puts professional security review out of reach for most developers, especially during active development when you need feedback the most.

The Solari Smart Contract Scanner solves this by providing free, instant vulnerability analysis directly in your browser. Paste your Solidity code, click scan, and get actionable results in seconds — no account creation, no API keys, no cost.

How the Free Solidity Scanner Works

The scanner uses pattern-based static analysis to identify known vulnerability classes in your Solidity source code. It parses your contract, maps control flow, and matches against a database of 20+ battle-tested vulnerability signatures.

1

Paste Your Code

Copy your Solidity smart contract source code into the editor. No file uploads, no build steps needed.

2

Instant Analysis

The scanner checks 20+ vulnerability patterns across 10 attack categories in under 5 seconds.

3

Get Your Report

Each finding includes severity level, affected line numbers, code context, and specific remediation guidance.

What Vulnerabilities Does It Detect?

The scanner covers the most exploited vulnerability classes in production smart contracts. Here are the 10 categories it checks, with specifics on what gets flagged.

Critical

Reentrancy Attacks

Detects external calls before state updates, cross-function reentrancy via shared state, and read-only reentrancy patterns. Catches the exact pattern that caused the DAO hack.

Critical

Access Control Flaws

Flags missing access modifiers on sensitive functions, unprotected initialize() functions, tx.origin authentication, and missing ownership checks on admin operations.

High

Oracle Manipulation

Identifies spot price dependencies, missing TWAP protections, single-source oracle reliance, and missing staleness checks on Chainlink price feeds.

High

Flash Loan Vectors

Spots price calculations vulnerable to single-block manipulation, unprotected liquidity pool ratios, and missing flash loan guards.

High

Token Handling Issues

Catches unsafe ERC-20 transfers (missing return value checks), fee-on-transfer token assumptions, rebasing token issues, and approval race conditions.

High

Signature Replay

Detects missing nonce tracking, missing chain ID in signed data, and ECDSA signatures without replay protection. Prevents cross-chain and same-chain replay attacks.

Medium

Denial of Service

Identifies unbounded loops over dynamic arrays, external calls in loops, block gas limit risks, and griefing vectors through selfdestruct or forced ether sends.

Medium

Proxy & Upgrade Issues

Flags storage collision risks, uninitialized implementation contracts, missing upgrade authorization checks, and function selector clashes in proxy patterns.

Medium

Arithmetic Vulnerabilities

Catches precision loss in division-before-multiplication, unchecked blocks with underflow/overflow potential, and unsafe casting between integer types.

Medium

Front-Running

Detects transactions vulnerable to MEV extraction, missing slippage protection on swaps, unprotected commit-reveal schemes, and sandwich attack surfaces.

Vulnerability Examples the Scanner Catches

Let's walk through concrete code patterns that the scanner flags, so you can understand exactly what it looks for and why each pattern is dangerous.

Example 1: Reentrancy (Critical)

The classic reentrancy bug — sending ETH via a low-level call before updating the sender's balance. An attacker contract can re-enter the withdraw function before balances[msg.sender] is decremented, draining the contract.

Vulnerable Code
function withdraw(uint256 amount) external {
    require(balances[msg.sender] >= amount, "Insufficient");

    // BUG: External call before state update
    (bool success,) = msg.sender.call{value: amount}("");
    require(success);

    balances[msg.sender] -= amount; // Too late!
}
Fixed Code (Checks-Effects-Interactions)
function withdraw(uint256 amount) external {
    require(balances[msg.sender] >= amount, "Insufficient");

    balances[msg.sender] -= amount; // State update FIRST

    (bool success,) = msg.sender.call{value: amount}("");
    require(success);
}

Example 2: Unprotected Initialize (Critical)

Upgradeable contracts use initialize() instead of constructors. If this function lacks access control, anyone can call it and claim ownership of the contract.

Vulnerable Code
// Anyone can call this and become the owner
function initialize(address _owner) external {
    owner = _owner;
}
Fixed Code (With Initializer Guard)
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";

function initialize(address _owner) external initializer {
    owner = _owner;
}

Example 3: tx.origin Authentication (High)

Using tx.origin for authentication is dangerous because it returns the original sender of the transaction, not the immediate caller. An attacker can trick the owner into calling a malicious contract that then calls the vulnerable function.

Vulnerable Code
function emergencyWithdraw() external {
    require(tx.origin == owner, "Not owner"); // Phishable!
    payable(owner).transfer(address(this).balance);
}
Fixed Code
function emergencyWithdraw() external {
    require(msg.sender == owner, "Not owner"); // Direct caller only
    payable(owner).transfer(address(this).balance);
}

Example 4: Unbounded Loop DoS (Medium)

Iterating over a dynamic array with no upper bound means an attacker can grow the array until the function exceeds the block gas limit, permanently bricking the contract.

Vulnerable Code
function batchTransfer(address[] calldata recipients, uint256[] calldata amounts) external {
    for (uint256 i = 0; i < recipients.length; i++) { // No upper bound!
        payable(recipients[i]).transfer(amounts[i]);
    }
}
Fixed Code (Bounded Batch)
uint256 constant MAX_BATCH = 50;

function batchTransfer(address[] calldata recipients, uint256[] calldata amounts) external {
    require(recipients.length <= MAX_BATCH, "Too many");
    for (uint256 i = 0; i < recipients.length; i++) {
        payable(recipients[i]).transfer(amounts[i]);
    }
}

These are just 4 of the 20+ patterns the scanner checks. The full scan also covers oracle staleness, signature replay without nonces, unsafe ERC-20 transfers, storage collisions in proxies, precision loss in arithmetic, missing slippage checks, and more.

Try It Right Now — Free

Paste your Solidity contract and get instant vulnerability analysis with line-level findings and remediation guidance.

Open the Scanner →

Who Should Use This Scanner?

Scan Tiers: Free, Standard, and Comprehensive

The basic pattern scan is free with no limits. For deeper analysis that catches business logic flaws and economic exploits, upgrade to a paid tier.

Basic
FREE
  • 20+ vulnerability patterns
  • Reentrancy, access control, oracle
  • Token, signature, DoS, proxy checks
  • Risk score and severity ratings
  • Line-level code references
  • Remediation guidance per finding
  • No signup or account needed
Scan Free
Comprehensive
$199
  • Everything in Standard
  • DeFi protocol-specific checks
  • Flash loan attack surface analysis
  • Oracle manipulation deep dive
  • Full audit report (PDF-ready)
  • Remediation playbook
  • Priority processing
Full Audit — $199

Free Solidity Scanner vs. Paid Audit Firms

Professional audit firms serve an important role for pre-mainnet security review. But they are expensive, slow, and inaccessible during development. Here is where the free scanner fits in your security workflow:

Important: No automated tool catches everything. Pattern scanning detects known vulnerability classes with high accuracy, but business logic flaws and novel attack vectors require human review. Always combine automated scanning with thorough testing and, for high-value contracts, a professional manual audit.

Frequently Asked Questions

Is the Solidity scanner really free?

Yes. The basic pattern-based scan is completely free with no signup, no email, and no limits. It checks 20+ vulnerability patterns including reentrancy, access control, oracle manipulation, and more. Paid tiers ($99 Standard and $199 Comprehensive) add AI-powered deep analysis and comprehensive audit reports for teams that need deeper coverage.

What Solidity versions are supported?

The scanner supports Solidity 0.4.x through 0.8.x, covering both legacy and modern contracts. It handles pragma directives, import statements, and multi-contract files.

Is my code stored or shared?

No. Your code is analyzed in real-time and is not stored on our servers after the scan completes. We do not share, sell, or retain your smart contract source code. The scan runs server-side for accuracy, and the code is discarded immediately after results are generated.

How does this compare to Slither, Mythril, or other tools?

Tools like Slither and Mythril are powerful but require local installation, Solidity compilation, and CLI expertise. Our scanner provides a zero-setup web interface — paste code, get results. The free tier offers pattern-based detection comparable to static analysis tools, while the paid tiers add AI reasoning that goes beyond what traditional static analysis can catch.

Can I scan contracts with imports?

The scanner analyzes the code you paste. For best results, flatten your contract (combining all imports into a single file) before scanning. Tools like forge flatten or truffle-flattener can do this automatically.

What does the risk score mean?

The risk score (0-100) is a composite metric based on the number, severity, and exploitability of detected vulnerabilities. Scores above 60 indicate high risk and likely exploitable issues. Scores below 30 suggest good baseline security hygiene, though they do not guarantee absence of all vulnerabilities.

Scan Your Smart Contract Now

Free, instant, no signup. Paste your Solidity code and get vulnerability analysis with specific findings, severity ratings, and remediation guidance.