---
title: "Freelancer Earnings Planner"
url: https://zinnhub.com/freelancer-resources/freelancer-earnings-planner/
description: "Plan your freelance income with our free earnings planner. Choose your category, sales volume and payment methods to see exactly what you take home on Zinn Hub."
published: 2026-02-09T14:51:04+00:00
modified: 2026-08-10T15:47:19+00:00
language: en-GB
---

# Freelancer Earnings Planner

Freelancer Earnings Planner — Plan Your Income on Zinn Hub

📊 Free Planning Tool

# Freelancer Earnings Planner *Plan Your Income on Zinn Hub*

Choose your service category, set your sales volume, split your payment methods and see exactly what you'll take home — with real commission rates and real payment processor fees.

$0

Potential annual earnings selling SEO services

 [Plan Your Earnings](#epCalculator)

📊 **24** Service Categories

💳 **3** Payment Methods

⚡ **Instant** Payouts

🪙 **0.5%** Crypto Fees

📈 **Growth** Projections

📊 Earnings Planner

⚙️ Account Settings

Membership Tier

Free Zinner

$0/mo

Sliding Scale

Pro Zinner

$25/mo

Flat 8%

Agency Zinner

$50/mo

Flat 7%

Payment Method Split

💳 Stripe

1.5% + 20p

50%

🅿️ PayPal

2.99% + 30p

30%

🪙 Crypto

0.5% flat

20%

 Total allocation 100% ✓

 Average Hours Per Order (optional) —

Off40 hrs

💰 Monthly Earnings

Your take-home

$0

 You keep —

🍩 Where Your Money Goes

⏱️ Your Effective Hourly Rate

—

Set hours per order to calculate your effective hourly rate.

💡 Smart Insights

📈 12-Month Growth Projections

🔥 Platform Comparison

💸

Enter your details to compare

 [Try the Fee Comparison Calculator →](https://zinnhub.com/freelancer-resources/freelancer-income-calculator/)

⚖️ Scenario Comparison

## How the Freelancer Earnings *Planner Works*

The Zinn Hub Freelancer Earnings Planner is a free interactive tool designed to help you forecast your take-home income as a freelancer. Unlike basic calculators that only show commission rates, this planner factors in your [service category](https://zinnhub.com/sell-services/), sales volume, [membership tier](https://zinnhub.com/packages/) and actual payment processing fees from Stripe, PayPal and cryptocurrency.

You can model multiple service lines simultaneously — perfect if you sell [SEO services](https://zinnhub.com/sell-services/sell-seo-services/) alongside [content writing](https://zinnhub.com/sell-services/sell-content-writing-services/) or [link building](https://zinnhub.com/sell-services/sell-link-building-services/). The planner aggregates everything into a single dashboard showing your projected monthly and annual earnings, with smart insights on how to maximise your income.

Our smart insights engine analyses your configuration and suggests actionable optimisations. It will tell you if switching payment methods could save you money, if upgrading your [membership tier](https://zinnhub.com/packages/) would pay for itself, and exactly what the break-even point is. The growth projections model three scenarios — steady, 10% monthly growth, and 20% monthly scaling — so you can see where your freelance business could be in 12 months.

## Average Pricing by *Service Category*

Here are typical pricing ranges across Zinn Hub's 24 service categories to help you set realistic projections in the planner. These ranges are based on market data and reflect what freelancers typically charge per project or per deliverable.

| Category | Typical Price Range | Common Projects |
| --- | --- | --- |
| SEO Services | £200 – £2,000 | Audits, keyword research, on-page optimisation |
| Web Development | £300 – £5,000 | WordPress sites, custom builds, e-commerce |
| Content Writing | £50 – £500 | Blog posts, copywriting, product descriptions |
| Digital Marketing | £200 – £3,000 | PPC campaigns, email marketing, strategy |
| Graphic Design | £50 – £1,000 | Logos, branding, social graphics |
| Social Media | £100 – £1,500 | Management, content creation, ads |
| Video Editing | £100 – £2,000 | YouTube editing, promos, animation |
| Link Building | £150 – £3,000 | Outreach, guest posts, niche edits |
| AI Services | £100 – £2,500 | Chatbots, automation, prompt engineering |
| E-Commerce | £200 – £4,000 | Store setup, product listings, optimisation |
| App Development | £500 – £10,000 | Mobile apps, SaaS, custom tools |
| Data Analytics | £200 – £3,000 | Dashboards, reporting, data visualisation |

## Understanding *Payment Processing Fees*

Platform commission is only part of the picture. Payment processing fees vary significantly depending on which method your clients use to pay. Zinn Hub supports three payment methods, each with different fee structures and payout speeds.

**Stripe** charges 1.5% + 20p per transaction for UK cards and 2.9% + 30¢ for US cards. Payouts are instant to your connected Stripe account. **PayPal** charges 2.99% + 30p per transaction with instant payouts. **Cryptocurrency** via NOWPayments charges just 0.5% with no fixed per-transaction fee — making it the cheapest option, especially for larger orders where the fixed fee becomes proportionally smaller.

The planner lets you split your expected sales across all three methods, so you can see exactly how your payment method mix affects your bottom line. For most freelancers, increasing the proportion of crypto payments can save hundreds per year in processing fees alone.

## Frequently Asked *Questions*

 How much can freelancers earn on Zinn Hub? +

Freelancer earnings on Zinn Hub vary by service category, pricing and sales volume. SEO freelancers typically charge £200–£2,000 per project, web developers £300–£5,000, and content writers £50–£500. With Zinn Hub's low commission starting at 0% and going as low as 7%, freelancers keep significantly more of their earnings. Use the [earnings planner above](#epCalculator) to calculate your projected income based on your specific category and volume.

 What payment processing fees does Zinn Hub charge? +

Zinn Hub does not charge payment processing fees itself. Processor fees are set by the provider: Stripe charges 1.5% + 20p for UK cards (2.9% + 30¢ for US), PayPal charges 2.99% + 30p, and cryptocurrency via NOWPayments costs just 0.5% with no fixed fee. You can compare all three in the [planner above](#epCalculator).

 Which payment method has the lowest fees? +

Cryptocurrency payments have the lowest processing fees at just 0.5% per transaction with no fixed per-transaction charge. This compares to Stripe at 1.5% + 20p and PayPal at 2.99% + 30p. For a £500 order, crypto costs just £2.50 in processing vs £7.70 with Stripe or £15.25 with PayPal.

 How much do SEO freelancers charge on Zinn Hub? +

SEO freelancers on Zinn Hub typically charge between £200 and £2,000 per project. Services range from keyword research and on-page audits at the lower end to comprehensive [link building](https://zinnhub.com/sell-services/sell-link-building-services/) campaigns and full SEO strategies at the higher end. With Zinn Hub's low commission, SEO freelancers keep more per project than on any other platform.

 Can I sell multiple types of services on Zinn Hub? +

Yes. Zinn Hub supports listing services across all 24 categories simultaneously. Many freelancers sell complementary services — for example [SEO](https://zinnhub.com/sell-services/sell-seo-services/), [content writing](https://zinnhub.com/sell-services/sell-content-writing-services/) and [link building](https://zinnhub.com/sell-services/sell-link-building-services/) together. The earnings planner's multi-line feature lets you model income across all your service types.

 How does Zinn Hub's commission compare to Fiverr? +

Fiverr charges a flat 20% commission regardless of volume. Zinn Hub starts at 0% on your first $500 and drops to 8% over $20,001. Pro members pay flat 8%, Agency members just 7%. A freelancer earning £5,000/month saves over £2,700/year on Zinn Hub versus Fiverr. [Compare the fees side by side](https://zinnhub.com/freelancer-resources/freelancer-income-calculator/) with our income calculator.

 What is the best membership tier for my sales volume? +

The Free plan is ideal for those earning under $3,000/month. Pro ($25/month, flat 8%) typically becomes worthwhile above $3,000/month. Agency ($50/month, flat 7%) saves the most for sellers earning $7,000+/month. The planner's smart insights will recommend the optimal tier based on your projected volume and show the exact break-even point. [View all membership packages](https://zinnhub.com/packages/).

 How fast do Zinn Hub payouts arrive? +

Stripe and PayPal payouts are instant — funds go directly to your connected account with no holding period. Crypto payouts are processed weekly every Friday. Compare that to Fiverr's 14-day hold or Upwork's 5–7 day processing time.

 How accurate are the earnings projections? +

The planner uses Zinn Hub's actual published commission rates and real payment processor fees from Stripe, PayPal and NOWPayments as of 2026. Growth projections use compound monthly growth rates. Actual earnings depend on your pricing, client acquisition and market demand.

 Can I save and compare different scenarios? +

Yes. The planner includes a scenario comparison feature that lets you save up to three different configurations and compare them side by side. This is useful for comparing different pricing strategies, [membership tiers](https://zinnhub.com/packages/) or payment method splits to find the most profitable approach.

⚡ Free Calculator Tool

## How Much More Could You *Earn on Zinn Hub*?

Our free freelancer income calculator compares your take-home earnings across Zinn Hub, Fiverr, Upwork and SEOClerks — with real fee structures and real numbers. See exactly how much more you keep with the lowest commission freelance marketplace.

0%

Starting Fees

7%

Lowest Rate

Instant

Payouts

 [Calculate Your Earnings](https://zinnhub.com/freelancer-resources/freelancer-income-calculator/) [View Memberships →](https://zinnhub.com/packages/)

💰 Earnings Preview

Based on $5,000/mo

$4,225

+$225/mo more than Fiverr

Zinn Hub

84.5%

Fiverr

80.0%

Upwork

80.0%

📈Save $2,700/year vs Fiverr

🛒 Service Categories

24 Categories

 [🔍SEO Services](https://zinnhub.com/sell-services/sell-seo-services/) [💻Web Development](https://zinnhub.com/sell-services/sell-web-development-services/) [✍️Content Writing](https://zinnhub.com/sell-services/sell-content-writing-services/) [📈Digital Marketing](https://zinnhub.com/sell-services/sell-digital-marketing-services/) [🎨Graphic Design](https://zinnhub.com/sell-services/sell-graphic-design-services/) [📱Social Media](https://zinnhub.com/sell-services/sell-social-media-services/) [🎬Video Editing](https://zinnhub.com/sell-services/sell-video-editing-services/) [🔗Link Building](https://zinnhub.com/sell-services/sell-link-building-services/) [🤖AI Services](https://zinnhub.com/sell-services/sell-ai-services/) [🛍️E-Commerce](https://zinnhub.com/sell-services/sell-ecommerce-services/)

 [View All Selling Opportunities →](https://zinnhub.com/sell-services/)

🚀 Start Selling Today

## Turn Your Skills Into Income. *Sell Services on Zinn Hub*

Whether you're an SEO expert, web developer, content writer, or graphic designer — list your freelance services across 24 specialist categories and reach clients actively looking for your skills. Zero listing fees. The lowest commission of any freelance platform.

✓

**0% commission** on your first $500 in sales

✓

**Instant payouts** to Stripe, PayPal or crypto

✓

**24 specialist categories** for targeted visibility

✓

Rates as low as **7%** — Fiverr charges 20%

 [Start Selling Free](https://zinnhub.com/zinner-registration/) [View All Selling Opportunities →](https://zinnhub.com/sell-services/)

## Ready to Start *Earning*?

Join Zinn Hub today. List your services for free, keep more of every sale, and get paid instantly.

 [Become a Zinner — Free](https://zinnhub.com/zinner-registration/) [View Membership Packages](https://zinnhub.com/packages/)

 [📚 Freelancer Resources Hub](https://zinnhub.com/freelancer-resources/) [🧮 Fee Comparison Calculator](https://zinnhub.com/freelancer-resources/freelancer-income-calculator/) [🚀 Become a Freelancer Guide](https://zinnhub.com/become-freelancer/) [🛒 Sell Services Hub](https://zinnhub.com/sell-services/) [💎 Membership Packages](https://zinnhub.com/packages/) [🏪 Browse Marketplaces](https://zinnhub.com/marketplaces/) [🔄 Fiverr Alternative](https://zinnhub.com/alternatives/fiverr-alternative/) [🔄 Upwork Alternative](https://zinnhub.com/alternatives/upwork-alternative/) [🔍 Sell SEO Services](https://zinnhub.com/sell-services/sell-seo-services/) [💻 Sell Web Development](https://zinnhub.com/sell-services/sell-web-development-services/) [✍️ Sell Content Writing](https://zinnhub.com/sell-services/sell-content-writing-services/) [🔗 Sell Link Building](https://zinnhub.com/sell-services/sell-link-building-services/)

' + '

---

' + '

Zinn Hub commission−' + fmt(r.commission) + '

' + '

Payment processing−' + fmt(r.processingTotal) + '

' + (r.membership > 0 ? '

Membership (' + state.tier + ')−' + fmt(r.membership) + '

' : '') + '

---

' + '

**Net take-home****' + fmt(r.takeHome) + '**

'; // Keep percentage document.getElementById('epKeepPct').textContent = r.keepPct.toFixed(1) + '% of every ' + symbols\[state.currency\] + '1'; // Donut chart renderDonut(r); // Hourly rate var hCard = document.getElementById('epHourlyCard'); if (state.hoursPerOrder > 0 && r.totalHours > 0) { hCard.style.display = ''; document.getElementById('epHourlyValue').textContent = fmt(r.hourlyRate) + '/hr'; var monthlyHours = r.totalHours / (state.period === 'yearly' ? 12 : 1); document.getElementById('epHourlyText').innerHTML = 'Based on **' + monthlyHours.toFixed(0) + ' hours/month** across ' + (state.period === 'yearly' ? (r.totalSales/12).toFixed(0) : r.totalSales) + ' orders. This is your effective rate after all fees.'; } else { hCard.style.display = 'none'; } // Smart Insights renderInsights(r); // Growth projections renderGrowth(r); // Comparison callout if (r.gross > 0) { var annualSaving = r.savingsVsFiverr \* (state.period === 'yearly' ? 1 : 12); document.getElementById('epComparisonText').innerHTML = 'On Fiverr, this same volume would cost you **' + fmt(Math.abs(annualSaving)) + '/year more in fees**. That\\'s ' + fmt(Math.abs(annualSaving / 12)) + ' extra in your pocket every month.'; } } function renderDonut(r) { var circ = 2 \* Math.PI \* 52; // ~326.73 var total = r.gross || 1; var thPct = r.takeHome / total; var comPct = r.commission / total; var prPct = r.processingTotal / total; var mPct = r.membership / total; var offset = 0; setDonutSlice('epDonutTakeHome', thPct \* circ, circ, offset); offset += thPct \* circ; setDonutSlice('epDonutCommission', comPct \* circ, circ, offset); offset += comPct \* circ; setDonutSlice('epDonutProcessing', prPct \* circ, circ, offset); offset += prPct \* circ; setDonutSlice('epDonutMembership', mPct \* circ, circ, offset); var legend = document.getElementById('epDonutLegend'); legend.innerHTML = '

Take-home ' + (thPct\*100).toFixed(1) + '%

' + '

Commission ' + (comPct\*100).toFixed(1) + '%

' + '

Processing ' + (prPct\*100).toFixed(1) + '%

' + (mPct > 0 ? '

Membership ' + (mPct\*100).toFixed(1) + '%

' : ''); } function setDonutSlice(id, dashLen, circ, offset) { var el = document.getElementById(id); el.setAttribute('stroke-dasharray', dashLen + ' ' + (circ - dashLen)); el.setAttribute('stroke-dashoffset', -offset); } function renderInsights(r) { var html = ''; // Payment optimisation if (state.splitCrypto < 100 && r.gross > 0) { var altState = JSON.parse(JSON.stringify(state)); var origProcessing = r.processingTotal; // Calculate if all crypto var allCryptoFees = (r.gross) \* 0.005; var saving = origProcessing - allCryptoFees; if (saving > 5) { html += '

🪙

Switching all payments to **crypto** would save you ' + fmt(saving) + ' ' + (state.period === 'yearly' ? 'per year' : 'per month') + ' in processing fees. Crypto charges just 0.5% with no fixed transaction fee.

'; } } // Tier upgrade recommendation if (state.tier === 'free' && r.monthlyGross > 0) { var proComm = r.monthlyGross \* 0.08; var proCost = 25; var proTotal = proComm + proCost; var freeComm = calcFreeCommission(r.monthlyGross); if (freeComm > proTotal) { var proSaving = (freeComm - proTotal) \* (state.period === 'yearly' ? 12 : 1); html += '

⬆️

At your volume, upgrading to **Pro** ($25/mo) would save you ' + fmt(proSaving) + '/' + (state.period === 'yearly' ? 'year' : 'month') + '. Pro pays for itself at ~$' + Math.ceil(proCost / (0.20 - 0.08)) + '/mo in sales.

'; } var agencyComm = r.monthlyGross \* 0.07; var agencyCost = 50; var agencyTotal = agencyComm + agencyCost; if (freeComm > agencyTotal) { var agencySaving = (freeComm - agencyTotal) \* (state.period === 'yearly' ? 12 : 1); html += '

🏢

**Agency** ($50/mo) would save even more: ' + fmt(agencySaving) + '/' + (state.period === 'yearly' ? 'year' : 'month') + '. Best value for sellers above ~$7,000/mo.

'; } } if (state.tier === 'pro' && r.monthlyGross > 0) { var agencyComm2 = r.monthlyGross \* 0.07; var agencyCost2 = 50; var proComm2 = r.monthlyGross \* 0.08 + 25; var agencyTotal2 = agencyComm2 + agencyCost2; if (proComm2 > agencyTotal2) { var save = (proComm2 - agencyTotal2) \* (state.period === 'yearly' ? 12 : 1); html += '

🏢

At your volume, **Agency** would save ' + fmt(save) + ' more ' + (state.period === 'yearly' ? 'per year' : 'per month') + ' vs Pro.

'; } } // Multi-service suggestion if (state.serviceLines.length === 1 && r.gross > 0) { html += '

➕

Add more service lines to model income from **multiple categories**. Many freelancers earn more by offering complementary services.

'; } if (!html) { html = '

✅

Configure your service lines and settings to receive **personalised saving tips**.

'; } document.getElementById('epInsights').innerHTML = html; } function renderGrowth(r) { var monthlyNet = r.monthlyTakeHome; var scenarios = \[ { name: 'Steady', rate: 0, desc: '0% growth' }, { name: 'Growing', rate: 0.10, desc: '10%/mo' }, { name: 'Scaling', rate: 0.20, desc: '20%/mo' } \]; var html = ''; for (var s = 0; s < scenarios.length; s++) { var total = 0; var m12 = monthlyNet; for (var m = 0; m < 12; m++) { var monthEarn = monthlyNet \* Math.pow(1 + scenarios\[s\].rate, m); total += monthEarn; if (m === 11) m12 = monthEarn; } html += '

' + '

' + scenarios\[s\].name + '

' + '

' + scenarios\[s\].desc + '

' + '

Mo.12: ' + fmt(m12) + '

' + '

Year total: ' + fmt(total) + '

' + '

'; } document.getElementById('epGrowthCards').innerHTML = html; } /\* ===== SERVICE LINE RENDERING ===== \*/ function renderServiceLines() { var container = document.getElementById('epServiceLines'); container.innerHTML = ''; for (var i = 0; i < state.serviceLines.length; i++) { container.appendChild(createServiceLineEl(i)); } var addBtn = document.getElementById('epAddLine'); addBtn.style.display = state.serviceLines.length >= 5 ? 'none' : ''; } function createServiceLineEl(idx) { var line = state.serviceLines\[idx\]; var cat = CATEGORIES\[line.category\]; var div = document.createElement('div'); div.className = 'ep-service-line'; div.innerHTML = '

' + 'Service Line ' + (idx + 1) + '' + (state.serviceLines.length > 1 ? '' : '') + '

' + '

' + '

Service Category

' + '' + '

' + '

' + '

Average Order Price ' + fmt(line.price) + '

' + '' + '

' + fmt(cat.min) + '' + fmt(cat.max) + '

' + '

' + '

' + '

Sales Per Month ' + line.sales + (line.sales <= 5 ? ' (Side Hustle)' : line.sales <= 15 ? ' (Part-Time)' : line.sales <= 30 ? ' (Full-Time)' : ' (Scaling)') + '

' + '' + '

1 (Side Hustle)100 (Scaling)

' + '

'; // Remove button handler var removeBtn = div.querySelector('.ep-service-line\_\_remove'); if (removeBtn) { removeBtn.addEventListener('click', function() { var i = parseInt(this.getAttribute('data-idx')); state.serviceLines.splice(i, 1); renderServiceLines(); render(); }); } // Category change div.querySelector('\[data-field="category"\]').addEventListener('change', function() { var i = parseInt(this.getAttribute('data-idx')); var ci = parseInt(this.value); state.serviceLines\[i\].category = ci; state.serviceLines\[i\].price = CATEGORIES\[ci\].avg; renderServiceLines(); render(); }); // Price slider div.querySelector('\[data-field="price"\]').addEventListener('input', function() { var i = parseInt(this.getAttribute('data-idx')); state.serviceLines\[i\].price = parseInt(this.value); var label = document.getElementById('epPrice' + i); if (label) label.textContent = fmt(state.serviceLines\[i\].price); render(); }); // Sales slider div.querySelector('\[data-field="sales"\]').addEventListener('input', function() { var i = parseInt(this.getAttribute('data-idx')); var v = parseInt(this.value); state.serviceLines\[i\].sales = v; var label = document.getElementById('epSales' + i); var tag = v <= 5 ? ' (Side Hustle)' : v <= 15 ? ' (Part-Time)' : v <= 30 ? ' (Full-Time)' : ' (Scaling)'; if (label) label.textContent = v + tag; render(); }); return div; } /\* ===== INIT EVENT LISTENERS ===== \*/ function init() { // Currency toggle document.querySelectorAll('.ep-currency-btn').forEach(function(btn) { btn.addEventListener('click', function() { document.querySelectorAll('.ep-currency-btn').forEach(function(b) { b.classList.remove('active'); }); this.classList.add('active'); state.currency = this.getAttribute('data-currency'); renderServiceLines(); render(); }); }); // Period toggle document.querySelectorAll('.ep-period-btn').forEach(function(btn) { btn.addEventListener('click', function() { document.querySelectorAll('.ep-period-btn').forEach(function(b) { b.classList.remove('active'); }); this.classList.add('active'); state.period = this.getAttribute('data-period'); render(); }); }); // Tier cards document.querySelectorAll('.ep-tier-card').forEach(function(card) { card.addEventListener('click', function() { document.querySelectorAll('.ep-tier-card').forEach(function(c) { c.classList.remove('active'); }); this.classList.add('active'); state.tier = this.getAttribute('data-tier'); render(); }); }); // Payment split sliders (linked) var sliders = { stripe: document.getElementById('epSplitStripe'), paypal: document.getElementById('epSplitPaypal'), crypto: document.getElementById('epSplitCrypto') }; function updateSplitDisplay() { document.getElementById('epSplitStripePct').textContent = state.splitStripe + '%'; document.getElementById('epSplitPaypalPct').textContent = state.splitPaypal + '%'; document.getElementById('epSplitCryptoPct').textContent = state.splitCrypto + '%'; var total = state.splitStripe + state.splitPaypal + state.splitCrypto; var totalEl = document.getElementById('epSplitTotal'); if (total === 100) { totalEl.textContent = '100% ✓'; totalEl.className = 'ep-payment-total\_\_ok'; } else { totalEl.textContent = total + '% — adjust to 100%'; totalEl.className = 'ep-payment-total\_\_err'; } } sliders.stripe.addEventListener('input', function() { state.splitStripe = parseInt(this.value); var remaining = 100 - state.splitStripe; var ratio = state.splitPaypal + state.splitCrypto; if (ratio > 0) { state.splitPaypal = Math.round(state.splitPaypal / ratio \* remaining); state.splitCrypto = remaining - state.splitPaypal; } else { state.splitPaypal = Math.round(remaining / 2); state.splitCrypto = remaining - state.splitPaypal; } sliders.paypal.value = state.splitPaypal; sliders.crypto.value = state.splitCrypto; updateSplitDisplay(); render(); }); sliders.paypal.addEventListener('input', function() { state.splitPaypal = parseInt(this.value); var remaining = 100 - state.splitPaypal; var ratio = state.splitStripe + state.splitCrypto; if (ratio > 0) { state.splitStripe = Math.round(state.splitStripe / ratio \* remaining); state.splitCrypto = remaining - state.splitStripe; } else { state.splitStripe = Math.round(remaining / 2); state.splitCrypto = remaining - state.splitStripe; } sliders.stripe.value = state.splitStripe; sliders.crypto.value = state.splitCrypto; updateSplitDisplay(); render(); }); sliders.crypto.addEventListener('input', function() { state.splitCrypto = parseInt(this.value); var remaining = 100 - state.splitCrypto; var ratio = state.splitStripe + state.splitPaypal; if (ratio > 0) { state.splitStripe = Math.round(state.splitStripe / ratio \* remaining); state.splitPaypal = remaining - state.splitStripe; } else { state.splitStripe = Math.round(remaining / 2); state.splitPaypal = remaining - state.splitStripe; } sliders.stripe.value = state.splitStripe; sliders.paypal.value = state.splitPaypal; updateSplitDisplay(); render(); }); // Hours slider document.getElementById('epHoursRange').addEventListener('input', function() { var v = parseFloat(this.value); state.hoursPerOrder = v; document.getElementById('epHoursVal').textContent = v === 0 ? '—' : v + ' hrs'; render(); }); // Add service line document.getElementById('epAddLine').addEventListener('click', function() { if (state.serviceLines.length >= 5) return; var nextCat = Math.min(state.serviceLines.length, CATEGORIES.length - 1); state.serviceLines.push({ category: nextCat, price: CATEGORIES\[nextCat\].avg, sales: 5 }); renderServiceLines(); render(); }); // Scenarios document.querySelectorAll('#epScenarioBar .ep-scenario-btn\[data-slot\]').forEach(function(btn) { btn.addEventListener('click', function() { var slot = parseInt(this.getAttribute('data-slot')); state.activeScenario = slot; document.querySelectorAll('#epScenarioBar .ep-scenario-btn\[data-slot\]').forEach(function(b) { b.classList.remove('active'); }); this.classList.add('active'); // Load scenario if saved if (state.scenarios\[slot\]) { var saved = state.scenarios\[slot\]; state.serviceLines = JSON.parse(JSON.stringify(saved.serviceLines)); state.tier = saved.tier; state.splitStripe = saved.splitStripe; state.splitPaypal = saved.splitPaypal; state.splitCrypto = saved.splitCrypto; state.hoursPerOrder = saved.hoursPerOrder; // Update UI document.querySelectorAll('.ep-tier-card').forEach(function(c) { c.classList.remove('active'); }); document.querySelector('.ep-tier-card\[data-tier="' + state.tier + '"\]').classList.add('active'); sliders.stripe.value = state.splitStripe; sliders.paypal.value = state.splitPaypal; sliders.crypto.value = state.splitCrypto; document.getElementById('epHoursRange').value = state.hoursPerOrder; document.getElementById('epHoursVal').textContent = state.hoursPerOrder === 0 ? '—' : state.hoursPerOrder + ' hrs'; updateSplitDisplay(); renderServiceLines(); render(); } }); }); document.getElementById('epSaveScenario').addEventListener('click', function() { var slot = state.activeScenario; state.scenarios\[slot\] = { serviceLines: JSON.parse(JSON.stringify(state.serviceLines)), tier: state.tier, splitStripe: state.splitStripe, splitPaypal: state.splitPaypal, splitCrypto: state.splitCrypto, hoursPerOrder: state.hoursPerOrder, result: calculate() }; var btn = document.querySelector('#epScenarioBar .ep-scenario-btn\[data-slot="' + slot + '"\]'); btn.classList.add('saved'); btn.textContent = 'Scenario ' + (slot + 1) + ' ✓'; this.textContent = '💾 Saved!'; var self = this; setTimeout(function() { self.textContent = '💾 Save'; }, 1500); }); document.getElementById('epCompareScenarios').addEventListener('click', function() { var card = document.getElementById('epCompareCard'); var savedCount = state.scenarios.filter(function(s) { return s !== null; }).length; if (savedCount < 2) { card.style.display = ''; document.getElementById('epCompareContent').innerHTML = '

⚠️

Save at least **2 scenarios** to compare them side by side.

'; return; } card.style.display = ''; var html = '

'; for (var i = 0; i < 3; i++) { if (!state.scenarios\[i\]) continue; var r = state.scenarios\[i\].result; html += '

' + '

Scenario ' + (i + 1) + '

' + '

' + fmt(r.takeHome) + '

' + '

' + state.scenarios\[i\].tier + ' tier

' + '

Keep ' + r.keepPct.toFixed(1) + '%

' + '

' + state.scenarios\[i\].serviceLines.length + ' service line(s)

' + '

'; } html += '

'; document.getElementById('epCompareContent').innerHTML = html; card.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }); // Share on X document.getElementById('epShareX').addEventListener('click', function() { var r = calculate(); var text = 'I could earn ' + fmt(r.takeHome) + '/' + (state.period === 'yearly' ? 'year' : 'month') + ' selling freelance services on @ZinnHub — keeping ' + r.keepPct.toFixed(0) + '% of every sale 🚀\\n\\nPlan your earnings: https://zinnhub.com/freelancer-resources/freelancer-earnings-planner/'; window.open('https://x.com/intent/tweet?text=' + encodeURIComponent(text), '\_blank'); }); // Copy results document.getElementById('epCopyResults').addEventListener('click', function() { var r = calculate(); var text = 'Freelancer Earnings Plan — Zinn Hub\\n' + '━━━━━━━━━━━━━━━━━━━\\n' + 'Gross: ' + fmt(r.gross) + '/' + (state.period === 'yearly' ? 'year' : 'month') + '\\n' + 'Commission: -' + fmt(r.commission) + '\\n' + 'Processing: -' + fmt(r.processingTotal) + '\\n' + (r.membership > 0 ? 'Membership: -' + fmt(r.membership) + '\\n' : '') + '━━━━━━━━━━━━━━━━━━━\\n' + 'Take-home: ' + fmt(r.takeHome) + ' (' + r.keepPct.toFixed(1) + '%)\\n' + 'vs Fiverr: +' + fmt(r.savingsVsFiverr) + ' more\\n\\n' + 'Plan yours: zinnhub.com/freelancer-resources/freelancer-earnings-planner/'; navigator.clipboard.writeText(text).then(function() { var btn = document.getElementById('epCopyResults'); btn.classList.add('copied'); btn.textContent = '✓ Copied!'; setTimeout(function() { btn.classList.remove('copied'); btn.textContent = '📋 Copy Results'; }, 2000); }); }); // Initial render renderServiceLines(); render(); // Hero counter animation var heroObs = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { animateHeroCounter(); heroObs.unobserve(entry.target); } }); }, { threshold: 0.3 }); heroObs.observe(document.getElementById('epHero')); // Scroll reveal var revealEls = document.querySelectorAll('.ep-reveal'); var revealObs = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { entry.target.classList.add('ep-visible'); revealObs.unobserve(entry.target); } }); }, { threshold: 0.1 }); revealEls.forEach(function(el) { revealObs.observe(el); }); } function animateHeroCounter() { var el = document.getElementById('epHeroCounter'); // SEO freelancer: 10 sales/mo \* $500 avg \* 12 months \* ~85% take-home var target = 51000; var duration = 1500; var start = performance.now(); function tick(now) { var elapsed = now - start; var p = Math.min(elapsed / duration, 1); var eased = 1 - Math.pow(1 - p, 3); el.textContent = symbols\[state.currency\] + Math.round(target \* rates\[state.currency\] \* eased).toLocaleString('en-US'); if (p < 1) requestAnimationFrame(tick); } requestAnimationFrame(tick); } /\* ===== FAQ ===== \*/ window.toggleFaq = function(el) { var item = el.parentElement; var answer = item.querySelector('.ep-faq\_\_a'); if (item.classList.contains('open')) { item.classList.remove('open'); answer.style.maxHeight = '0'; } else { // Close others document.querySelectorAll('.ep-faq\_\_item.open').forEach(function(o) { o.classList.remove('open'); o.querySelector('.ep-faq\_\_a').style.maxHeight = '0'; }); item.classList.add('open'); answer.style.maxHeight = answer.scrollHeight + 'px'; } }; // Boot if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();

🔄 Switch From

5 Platforms

 [🟢  Switch from Fiverr 20% commission on every sale  →](https://zinnhub.com/switch-from/fiverr/) [🟩  Switch from Upwork Pay to bid + up to 20% fees  →](https://zinnhub.com/switch-from/upwork/) [🔵  Switch from SEOClerks 20% flat + outdated platform  →](https://zinnhub.com/switch-from/seoclerks/) [🟠  Switch from PeoplePerHour Double fees + AI blocks proposals  →](https://zinnhub.com/switch-from/peopleperhour/) [🔷  Switch from Freelancer.com Bidding wars + contest model  →](https://zinnhub.com/switch-from/freelancer-com/)

 [Compare All Platforms →](https://zinnhub.com/switch-from/)

🔄 Time to Switch

## Stop Losing Money to Platform Fees. *Keep More.*

Freelancers on Fiverr, Upwork, and other platforms lose up to 20% of every sale to commissions — plus deal with slow payouts and restricted messaging. Zinn Hub gives you direct payments, crypto acceptance, and the lowest fees in the industry.

 Commission

 20% 0%

 First $500 commission-free

 Payout Speed

 14 days Instant

 Via your own PayPal / Stripe

✓

**Direct payments** to your own PayPal or Stripe

✓

**Crypto built in** — weekly Friday payouts

✓

**No bidding or proposals** — clients buy directly

✓

**Free Concierge setup** with founder Neil

 [Switch to Zinn Hub Free](https://zinnhub.com/zinner-registration/) [Compare All Platforms →](https://zinnhub.com/switch-from/)

✈️ Telegram Community

## Join the *Zinn Hub* Community on Telegram

Get instant platform updates, chat with digital marketing professionals, discuss SEO strategies, and access direct support — all free on Telegram. Three dedicated spaces, one growing community.

📢

Announcements

💬

Community Chat

🛟

Direct Support

 [Explore Our Telegram](https://zinnhub.com/telegram/)

Z

Zinn Hub on Telegram

3 spaces · Free to join

📢

Announcements

Updates, features & competitions

💬

Community Chat

SEO talk, tips & networking

🛟

Customer Support

Private help fast

 ✈️ Free to join · No sign-up required
