IndieIndex

Methodology

How we collect, validate, and display freelance rate data.

Transparency note (as of February 2026): Most controls described on this page are live in production. Some, including confidence tier display logic and hard rate ceiling enforcement, are tracked as planned improvements and will be implemented in the near term. We publish this methodology now because we believe in being upfront about both what's working and what's coming. This page will be updated as features ship.

Where the data comes from

Community submissions

Freelancers submit their own rates through the site. This is the core dataset and the only source used for percentile calculations. Every submission includes category, specialization, experience level, region, rate type, and rate amount. Submissions are anonymous. We collect an email for duplicate prevention but never display it or share it.

Published reports and government data

We reference aggregate statistics from published sources to provide additional context. These are stored separately from community submissions and are never mixed into percentile calculations.

  • Active U.S. Bureau of Labor Statistics OEWS. Public domain government data covering employed worker wages by occupation.
  • Planned Payoneer Global Freelancer Survey. Published annual survey of 7,000+ freelancers across 150 countries.
  • Planned Peak Freelance Survey. Published survey of freelance writers covering income and rate structures.
  • Planned Editorial Freelancers Association (EFA) Rate Survey. Published median rates for editorial professionals.

Seed data

To provide useful benchmarks from day one, we started with a structured seed dataset based on published rate ranges. Seed entries are tagged internally. As community submissions grow, seed data becomes a progressively smaller share of the total.

We never scrape other platforms' data. We never misrepresent external data as user submissions. Every data point is tagged with its source.

Quality controls

Rate ceilings

Every submission is checked against rate-type-specific maximum values. Currently, rates exceeding these ceilings are flagged for review. Hard rejection at the API level is a planned improvement.

Rate TypeCeiling
Hourly$500
Daily$5,000
Weekly$15,000
Monthly$50,000
Per-project$100,000

Enum validation

Category, specialization, experience level, region, and rate type must match predefined values. Free-text is not accepted for these fields.

Duplicate prevention

One submission per email address per quarter. Prevents gaming while allowing rate updates over time.

Source tracking

Every entry is tagged with its collection method (community, seed, survey, etc.), enabling quality analysis by channel.

How we calculate your percentile

We use a cascading waterfall to find a statistically meaningful comparison group for your submission. Here is how it works:

  1. 1. Start specific. We first look for freelancers matching all your filters. The most specific match checks exact match (category + specialization + experience + region + rate type).
  2. 2. Broaden if needed. If the match has fewer than 10 data points, we progressively broaden by dropping filters. The exact cascade order:
LevelScope
1Exact match (category + specialization + experience + region + rate type)
2Category + specialization + experience + rate type (any region)
3Category + specialization + rate type (any experience, any region)
4Category + rate type (any specialization)
5Category only (broadest)
  1. 3. Always show context. We always tell you what scope produced your benchmark (e.g., "Based on 47 UI/UX designers across all experience levels").
  2. 4. Percentile math. Percentiles (25th, 50th/median, 75th) are calculated directly from the distribution. The mean is the arithmetic average. No smoothing, no modeling, no machine learning.

How to read the confidence labels

We are rolling out tiered confidence labels. Currently, all available data is shown with sample sizes so you can judge reliability yourself. The intended behavior:

Sample SizeWhat You See
100+Full distribution curve with all statistics. High confidence.
25-99Percentile and mean shown with a note: "Based on [N] data points." Muted distribution curve.
10-24Mean and range only with a note: "Limited data. Directional only."
Under 10No benchmark displayed. Prompt to share and invite peers.

We'd rather show you less data honestly than more data misleadingly.

What this data can and can't tell you

  • Self-reported data. We can't independently verify rates. Same limitation as Glassdoor, Levels.fyi, and Contractrates.fyi.
  • Non-probability sample. Convenience sample of freelancers who found this tool. May skew toward English-speaking, online-active freelancers.
  • Self-selection bias. Confident freelancers may be more likely to submit, potentially skewing data upward.
  • Government data covers employees, not freelancers. BLS reference data covers employed workers. Freelance rates are typically higher (self-employment taxes, benefits, unpaid gaps). We do not apply a multiplier. We present BLS data as-is and note the distinction.
  • Early-stage dataset. Our dataset is growing. Sample sizes are shown on every benchmark so you can judge reliability yourself.

IndieIndex provides benchmarking information only. Nothing on this site constitutes legal, tax, or financial advice.

How we protect your data

  • Email addresses are collected solely for duplicate prevention. Your email is never displayed publicly or shared with third parties.
  • All benchmarks are aggregate statistics. No individual submission is displayed in a way that could identify a specific person.
  • Submission data is stored with row-level security. The intended access pattern is aggregate benchmarks only. Endpoint hardening to enforce this fully is in progress.
  • Reference data from published sources is stored separately and attributed to its source.

Reference datasets reviewed quarterly. Last updated: February 2026.