DeadCode.io Documentation
Welcome to the DeadCode.io documentation. This guide will help you understand how to use our platform to detect and eliminate dead code from your codebase.
Start with the Quick Start Guide to get up and running in under 5 minutes.
What is Dead Code?
Dead code refers to any code in your codebase that is never executed during runtime. This includes:
- Unused Functions: Functions that are defined but never called
- Unreachable Code: Code paths that can never be executed due to conditional logic
- Orphaned Imports: Import statements for modules that are never used
- Deprecated Modules: Old code that was replaced but never removed
- Commented Code: Large blocks of commented-out code
Dead code isn't just clutter—it actively harms your project:
- Increased Build Times: More code = longer compile and bundle times
- Security Risks: Unaudited code paths can harbor vulnerabilities
- Maintenance Burden: Confuses developers and increases onboarding time
- Larger Bundle Sizes: Dead code increases download sizes for users
- Higher Costs: More storage, bandwidth, and compute resources needed
Quick Start Guide
Get started with DeadCode.io in just a few minutes. Follow these steps to run your first scan.
Sign in with GitHub
Click the "Sign In" button and authenticate with your GitHub account. We use OAuth so we never see your password. You'll be asked to authorize DeadCode.io to access your repositories.
Connect Your Repositories
Select which repositories you want to scan. You can choose individual repos or grant access to all repos in an organization. Private repos are supported on all paid plans.
Run Your First Scan
Click "Scan Now" on any connected repository. Our engine will analyze your codebase using AST parsing to identify dead code patterns. Scans typically complete in under 60 seconds.
Review and Resolve Issues
Browse the issues found, sorted by severity. Each issue includes the file path, line number, code snippet, and recommended action. Click through to view the code in context.
Set Up Automated Scans
Configure automated scans to run on every push, pull request, or on a schedule. This ensures dead code is caught before it enters your main branch.
Connecting Repositories
DeadCode.io integrates directly with GitHub to scan your repositories. Here's how to connect your repos.
GitHub OAuth
When you sign in with GitHub, you'll be asked to authorize the following permissions:
repo- Read access to your repositories (required for scanning)read:user- Read your profile informationread:org- See organization membership (for team features)
We only read your code during scans. Code is analyzed in memory and never stored on our servers. Scan results contain only metadata about issues found.
Selecting Repositories
After signing in, go to Dashboard → Repositories and click "Connect Repository". You can:
- Select individual repositories from the list
- Connect all repositories in an organization
- Filter by language or last activity
Running Scans
Learn how to run scans and configure scanning options for your repositories.
Manual Scans
To run a manual scan:
- Go to Dashboard → Repositories
- Click on the repository you want to scan
- Click the "Scan Now" button
- Wait for the scan to complete (usually 30-60 seconds)
Automated Scans
Configure automated scans in Settings → Scanning:
| Trigger | Description | Best For |
|---|---|---|
| On Push | Scan on every commit to main/master | Continuous monitoring |
| On PR | Scan when a pull request is opened | Pre-merge validation |
| Scheduled | Run daily/weekly at a set time | Regular audits |
Scan Configuration
Customize what gets scanned by creating a .deadcode.yml file in your repository root:
# .deadcode.yml
languages:
- javascript
- typescript
- python
exclude:
- "node_modules/**"
- "dist/**"
- "**/*.test.js"
- "**/__tests__/**"
severity_threshold: medium # low, medium, high, critical
Managing Issues
After a scan completes, issues are categorized by type and severity.
Issue Types
| Type | Description | Example |
|---|---|---|
| Unused Function | Function defined but never called | function oldHelper() {} |
| Unused Variable | Variable declared but never used | const debug = true; |
| Orphaned Import | Import statement with no usage | import { unused } from './utils' |
| Unreachable Code | Code after return/throw | Code after return |
| Empty Block | Empty catch/if/else blocks | catch (e) {} |
Severity Levels
- ● Critical: Security risk or definite bug (always fix)
- ● High: Significant dead code affecting performance
- ● Medium: Unused code that should be cleaned up
- ● Low: Minor issues, suggestions for improvement
Resolving Issues
For each issue, you can:
- Fix: Remove the dead code from your codebase
- Ignore: Mark as false positive (won't appear in future scans)
- Comment: Add a note explaining why it should remain
- Assign: Assign to a team member to fix
Reports & Analytics
Track your progress in eliminating dead code over time.
Dashboard Metrics
Your dashboard shows key metrics at a glance:
- Total Issues: Number of dead code issues across all repos
- Issues Fixed: Number resolved this month
- Code Health Score: 0-100 score based on dead code ratio
- Trend: Is your codebase getting cleaner over time?
Generating Reports
Go to Reports to generate detailed reports:
- Summary Report: High-level overview for executives
- Detailed Report: Full issue list with code snippets
- Trend Report: Historical data over time
- Team Report: Issues by assignee/team
Reports can be exported as PDF or CSV.
Roles & Permissions
DeadCode.io uses a hierarchical role-based access control (RBAC) system to manage permissions across your organization.
Permission Matrix
| Permission | SuperAdmin | Admin | Manager | Developer | Analyst |
|---|---|---|---|---|---|
| View dashboard | ✓ | ✓ | ✓ | ✓ | ✓ |
| Run scans | ✓ | ✓ | ✓ | ✓ | ✗ |
| Resolve issues | ✓ | ✓ | ✓ | ✓ | ✗ |
| Export reports | ✓ | ✓ | ✓ | ✗ | ✓ |
| Invite members | ✓ | ✓ | ✓ | ✗ | ✗ |
| Manage billing | ✓ | ✓ | ✗ | ✗ | ✗ |
| Configure SSO | ✓ | ✓ | ✗ | ✗ | ✗ |
| Delete organization | ✓ | ✗ | ✗ | ✗ | ✗ |
| Manage all organizations | ✓ | ✗ | ✗ | ✗ | ✗ |
| Approve demo requests | ✓ | ✗ | ✗ | ✗ | ✗ |
Role Descriptions
Platform SuperAdmin
The highest level of access. SuperAdmins can manage all organizations on the platform, approve demo requests, access audit logs, and configure platform-wide settings like SSO/SAML. Typically limited to 2-3 people (founders/CTO).
Company Admin
Full control over a single organization. Can manage team members, configure integrations, view billing, set scanning schedules, and export reports. Suitable for engineering leads or department heads.
Manager
Can view all repositories within the organization, assign issues to team members, generate reports, and track progress metrics. Cannot modify billing or organization settings.
Developer
Standard access for individual contributors. Can run scans on assigned repositories, view and resolve issues, and add comments. Cannot invite members or access billing.
Analyst
View-only access for stakeholders who need to see reports and metrics but don't need to modify anything. Can view dashboards and export reports.
Team Management
Manage your team members and their access levels.
Inviting Team Members
- Go to Team → Invite Members
- Enter their email address
- Select a role (Developer, Manager, etc.)
- Click "Send Invite"
Invited users will receive an email with a link to join your organization.
Changing Roles
Admins can change any team member's role:
- Go to Team → Members
- Click on the member's name
- Select a new role from the dropdown
- Click "Save Changes"
When you change someone's role, their permissions update instantly. They may need to refresh their browser to see the changes.
Plans & Pricing
Choose the plan that fits your team's needs. All plans include a 14-day free trial.
| Feature |
Starter
₹2,000/mo
|
Professional
₹3,499/mo
|
Enterprise
₹5,999/mo
|
|---|---|---|---|
| Repositories | 5 | 20 | Unlimited |
| Team Members | 3 | 10 | Unlimited |
| Scans per Month | 50 | 200 | Unlimited |
| Languages | JS, TS, Python | All 6 languages | All + custom |
| Reports | Basic | Advanced | Custom |
| Support | Priority | 24/7 Dedicated | |
| SSO/SAML | ✗ | ✗ | ✓ |
| API Access | ✗ | ✓ | ✓ |
| Audit Logs | ✗ | ✓ | ✓ |
Choose annual billing to save on your subscription. Annual plans are billed upfront for the full year.
Payment Methods
DeadCode.io accepts multiple payment methods through our secure payment processor, Razorpay.
Accepted Payment Methods
- Credit/Debit Cards: Visa, Mastercard, American Express, Rupay
- UPI: Google Pay, PhonePe, Paytm, any UPI app
- Net Banking: All major Indian banks
- Wallets: Paytm, Mobikwik, Freecharge
- International Cards: For non-INR currencies
Managing Payment Methods
To add or update your payment method:
- Go to Billing → Payment Methods
- Click "Add Payment Method"
- Enter your card details or UPI ID
- Click "Save"
All payments are processed by Razorpay using 256-bit SSL encryption. We never store your full card number on our servers.
Billing Cycle
Your billing cycle starts on the day you subscribe and renews on the same date each month (or year for annual plans). You'll receive an email reminder 7 days before renewal.
Invoices
Access and download your invoices from the billing dashboard.
Viewing Invoices
- Go to Billing → Invoices
- Browse the list of past invoices
- Click "Download" to get a PDF
Invoice Details
Each invoice includes:
- Invoice number and date
- Billing period
- Plan details and pricing
- Taxes (GST for India)
- Total amount paid
- Payment method used
Tax Information
For Indian customers, GST (18%) is applied to all invoices. To add your GSTIN for tax credits:
- Go to Billing → Tax Information
- Enter your GSTIN
- Click "Save"
Frequently Asked Questions
After your 14-day trial, you'll be prompted to choose a paid plan. If you don't subscribe, your account will be downgraded to a limited free tier (1 repository, 5 scans/month). Your data is never deleted—you can upgrade at any time to restore full access.
Yes! You can upgrade or downgrade your plan at any time from the Billing page. Upgrades take effect immediately and you'll be charged the prorated difference. Downgrades take effect at the end of your current billing period.
No. Your code is analyzed in memory during scans and never stored on our servers. We only store metadata about the issues found (file paths, line numbers, issue types). Your source code remains in your GitHub repository.
Go to Billing → Subscription and click "Cancel Subscription". Your access continues until the end of your current billing period. After cancellation, your data is retained for 30 days in case you want to reactivate.
We offer a full refund within 7 days of your first payment if you're not satisfied. After that, we don't offer refunds, but you can cancel to prevent future charges. Contact support for refund requests.
Yes! All paid plans support private repositories. When you connect your GitHub account, you can choose to grant access to private repos. Your code is always kept confidential and never shared.
Our scanner achieves 95%+ accuracy using AST-level analysis. However, some dynamic patterns (like reflection or string-based function calls) may produce false positives. You can mark false positives as "ignored" so they don't reappear.