{
  "name": "Exit Cost",
  "description": "What it really costs to leave a subscription.",
  "url": "https://nimbussage.github.io/exit-cost",
  "licence": "CC BY 4.0 — free to use with attribution",
  "generated_at": "2026-10-19T10:54:24.901Z",
  "method": "https://nimbussage.github.io/exit-cost/method/",
  "count": 36,
  "escapes": [
    {
      "slug": "1password-to-passbolt",
      "title": "1Password Business to self-hosted Passbolt",
      "summary": "Passbolt is built for teams rather than families, with real access control. It is also considerably more work than Vaultwarden.",
      "category": "password-manager",
      "verdict": "switch",
      "incumbent": "1Password",
      "incumbent_plan": "Business",
      "seats": 12,
      "alternative": "Passbolt (self-hosted)",
      "incumbent_annual": 1294.56,
      "alternative_annual": 721.25,
      "break_even_month": 11,
      "break_even_hourly_rate": 76.52,
      "savings_year_3": 1219.93,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/1password-to-passbolt/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/1password-to-passbolt.json"
    },
    {
      "slug": "1password-to-vaultwarden",
      "title": "1Password Business to self-hosted Vaultwarden",
      "summary": "Vaultwarden is the cheapest thing on this site to run — and the one where we most strongly urge you to weigh the risk, not just the price.",
      "category": "password-manager",
      "verdict": "switch",
      "incumbent": "1Password",
      "incumbent_plan": "Business",
      "seats": 8,
      "alternative": "Vaultwarden (self-hosted)",
      "incumbent_annual": 863.04,
      "alternative_annual": 510.83,
      "break_even_month": 11,
      "break_even_hourly_rate": 72.93,
      "savings_year_3": 756.62,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 1.8,
        "verdict": "switch"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/1password-to-vaultwarden/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/1password-to-vaultwarden.json"
    },
    {
      "slug": "airtable-to-baserow",
      "title": "Airtable Business to self-hosted Baserow",
      "summary": "At ten seats Airtable Business is $5,400 a year. That is enough that the arithmetic stops being interesting and starts being obvious.",
      "category": "database-spreadsheet",
      "verdict": "switch",
      "incumbent": "Airtable",
      "incumbent_plan": "Business",
      "seats": 10,
      "alternative": "Baserow (self-hosted)",
      "incumbent_annual": 5400,
      "alternative_annual": 694.17,
      "break_even_month": 2,
      "break_even_hourly_rate": 396.6,
      "savings_year_3": 13517.49,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 6.7,
        "verdict": "switch"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/airtable-to-baserow/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/airtable-to-baserow.json"
    },
    {
      "slug": "airtable-to-nocodb",
      "title": "Airtable Team to self-hosted NocoDB",
      "summary": "NocoDB puts an Airtable-shaped interface on a Postgres database you own. Per-seat pricing is what makes this one work.",
      "category": "database-spreadsheet",
      "verdict": "switch",
      "incumbent": "Airtable",
      "incumbent_plan": "Team",
      "seats": 5,
      "alternative": "NocoDB (self-hosted)",
      "incumbent_annual": 1200,
      "alternative_annual": 422.09,
      "break_even_month": 5,
      "break_even_hourly_rate": 134.74,
      "savings_year_3": 2033.74,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 3.1,
        "verdict": "switch"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/airtable-to-nocodb/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/airtable-to-nocodb.json"
    },
    {
      "slug": "airtable-to-teable",
      "title": "Airtable Team to self-hosted Teable",
      "summary": "Teable is the closest thing to Airtable anyone has built. It is also the youngest, and that cuts both ways.",
      "category": "database-spreadsheet",
      "verdict": "switch",
      "incumbent": "Airtable",
      "incumbent_plan": "Team",
      "seats": 6,
      "alternative": "Teable (self-hosted)",
      "incumbent_annual": 1440,
      "alternative_annual": 693.34,
      "break_even_month": 7,
      "break_even_hourly_rate": 102.57,
      "savings_year_3": 1839.99,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/airtable-to-teable/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/airtable-to-teable.json"
    },
    {
      "slug": "asana-to-openproject",
      "title": "Asana Starter to self-hosted OpenProject",
      "summary": "OpenProject covers Asana's core — projects, tasks, boards, timelines — and prices per user in EUR instead of per seat per month forever.",
      "category": "project-management",
      "verdict": "switch",
      "incumbent": "Asana",
      "incumbent_plan": "Starter",
      "seats": 15,
      "alternative": "OpenProject (self-hosted)",
      "incumbent_annual": 1978.2,
      "alternative_annual": 842.5,
      "break_even_month": 7,
      "break_even_hourly_rate": 108.48,
      "savings_year_3": 2807.09,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/asana-to-openproject/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/asana-to-openproject.json"
    },
    {
      "slug": "asana-to-plane",
      "title": "Asana Starter to self-hosted Plane",
      "summary": "Plane is the modern-looking one — cycles, modules, and an issue UI your team already knows how to use.",
      "category": "project-management",
      "verdict": "switch",
      "incumbent": "Asana",
      "incumbent_plan": "Starter",
      "seats": 15,
      "alternative": "Plane (self-hosted)",
      "incumbent_annual": 1978.2,
      "alternative_annual": 841.67,
      "break_even_month": 6,
      "break_even_hourly_rate": 113.25,
      "savings_year_3": 2909.6,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/asana-to-plane/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/asana-to-plane.json"
    },
    {
      "slug": "auth0-to-keycloak",
      "title": "Auth0 Essentials to self-hosted Keycloak",
      "summary": "Auth0 prices by monthly active users; Keycloak does not care how many you have. This is the escape with the steepest operational cost.",
      "category": "auth",
      "verdict": "stay",
      "incumbent": "Auth0",
      "incumbent_plan": "Essentials",
      "seats": 1,
      "alternative": "Keycloak (self-hosted)",
      "incumbent_annual": 420,
      "alternative_annual": 1141.67,
      "break_even_month": null,
      "break_even_hourly_rate": 6.86,
      "savings_year_3": -3365,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 6.5,
        "verdict": "marginal"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/auth0-to-keycloak/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/auth0-to-keycloak.json"
    },
    {
      "slug": "auth0-to-zitadel",
      "title": "Auth0 Professional to self-hosted Zitadel",
      "summary": "Zitadel is a lighter thing to run than Keycloak, and Auth0 Professional is four times the price of Essentials. Both facts move this one.",
      "category": "auth",
      "verdict": "switch",
      "incumbent": "Auth0",
      "incumbent_plan": "Professional",
      "seats": 1,
      "alternative": "Zitadel (self-hosted)",
      "incumbent_annual": 2880,
      "alternative_annual": 992.09,
      "break_even_month": 7,
      "break_even_hourly_rate": 121.75,
      "savings_year_3": 4663.74,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/auth0-to-zitadel/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/auth0-to-zitadel.json"
    },
    {
      "slug": "calendly-to-calcom",
      "title": "Calendly Standard to self-hosted Cal.com",
      "summary": "Cal.com is a close feature match for Calendly, which makes this one of the cleaner swaps — if you have enough seats.",
      "category": "scheduling",
      "verdict": "stay",
      "incumbent": "Calendly",
      "incumbent_plan": "Standard",
      "seats": 3,
      "alternative": "Cal.com (self-hosted)",
      "incumbent_annual": 360,
      "alternative_annual": 691.67,
      "break_even_month": null,
      "break_even_hourly_rate": 10.14,
      "savings_year_3": -1395,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/calendly-to-calcom/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/calendly-to-calcom.json"
    },
    {
      "slug": "calendly-to-easyappointments",
      "title": "Calendly Standard to self-hosted Easy!Appointments",
      "summary": "The lightest scheduling swap here — a PHP app on a $6 box. The trade is that it looks and feels like one.",
      "category": "scheduling",
      "verdict": "switch",
      "incumbent": "Calendly",
      "incumbent_plan": "Standard",
      "seats": 6,
      "alternative": "Easy!Appointments (self-hosted)",
      "incumbent_annual": 720,
      "alternative_annual": 360.83,
      "break_even_month": 9,
      "break_even_hourly_rate": 85.98,
      "savings_year_3": 827.5,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 1.8,
        "verdict": "switch"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/calendly-to-easyappointments/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/calendly-to-easyappointments.json"
    },
    {
      "slug": "chatwoot-cloud-to-self-hosted",
      "title": "Chatwoot Cloud to self-hosted Chatwoot",
      "summary": "Same software either way, so this is the cleanest comparison on the site: purely the price of someone else running it.",
      "category": "support-inbox",
      "verdict": "switch",
      "incumbent": "Chatwoot Cloud",
      "incumbent_plan": "Startups",
      "seats": 5,
      "alternative": "Chatwoot (self-hosted)",
      "incumbent_annual": 1140,
      "alternative_annual": 844.17,
      "break_even_month": 17,
      "break_even_hourly_rate": 61.08,
      "savings_year_3": 487.49,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/chatwoot-cloud-to-self-hosted/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/chatwoot-cloud-to-self-hosted.json"
    },
    {
      "slug": "docusign-to-documenso",
      "title": "Docusign Standard to self-hosted Documenso",
      "summary": "Docusign is expensive per seat and Documenso is a direct answer, but the legal-evidence story is where the real comparison lives.",
      "category": "e-signature",
      "verdict": "switch",
      "incumbent": "Docusign",
      "incumbent_plan": "Standard",
      "seats": 3,
      "alternative": "Documenso (self-hosted)",
      "incumbent_annual": 1080,
      "alternative_annual": 693.34,
      "break_even_month": 13,
      "break_even_hourly_rate": 71.71,
      "savings_year_3": 759.99,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/docusign-to-documenso/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/docusign-to-documenso.json"
    },
    {
      "slug": "docusign-to-docuseal",
      "title": "Docusign Standard to self-hosted DocuSeal",
      "summary": "DocuSeal is lighter to run than Documenso and does the same job. The legal question is identical, though.",
      "category": "e-signature",
      "verdict": "switch",
      "incumbent": "Docusign",
      "incumbent_plan": "Standard",
      "seats": 5,
      "alternative": "DocuSeal (self-hosted)",
      "incumbent_annual": 1800,
      "alternative_annual": 484.17,
      "break_even_month": 3,
      "break_even_hourly_rate": 182.16,
      "savings_year_3": 3647.49,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/docusign-to-docuseal/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/docusign-to-docuseal.json"
    },
    {
      "slug": "docusign-to-opensign",
      "title": "Docusign Standard to self-hosted OpenSign",
      "summary": "Five seats of Docusign is $1,800 a year. The cost is not the hard part of this decision — the evidence trail is.",
      "category": "e-signature",
      "verdict": "switch",
      "incumbent": "Docusign",
      "incumbent_plan": "Standard",
      "seats": 5,
      "alternative": "OpenSign (self-hosted)",
      "incumbent_annual": 1800,
      "alternative_annual": 845,
      "break_even_month": 7,
      "break_even_hourly_rate": 101.41,
      "savings_year_3": 2364.99,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/docusign-to-opensign/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/docusign-to-opensign.json"
    },
    {
      "slug": "figma-to-penpot",
      "title": "Figma Professional to self-hosted Penpot",
      "summary": "Penpot is the only design tool where open file format and open source are the same decision, and the seat math is where Figma charges most.",
      "category": "design",
      "verdict": "marginal",
      "incumbent": "Figma",
      "incumbent_plan": "Professional — Full seat",
      "seats": 6,
      "alternative": "Penpot (self-hosted)",
      "incumbent_annual": 1152,
      "alternative_annual": 843.34,
      "break_even_month": 24,
      "break_even_hourly_rate": 56.79,
      "savings_year_3": 325.99,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/figma-to-penpot/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/figma-to-penpot.json"
    },
    {
      "slug": "miro-to-drawio",
      "title": "Miro Starter to self-hosted draw.io",
      "summary": "draw.io costs almost nothing to run and does maybe a third of what Miro does. Which third decides this.",
      "category": "whiteboard",
      "verdict": "switch",
      "incumbent": "Miro",
      "incumbent_plan": "Starter",
      "seats": 6,
      "alternative": "draw.io (self-hosted)",
      "incumbent_annual": 576,
      "alternative_annual": 240.83,
      "break_even_month": 6,
      "break_even_hourly_rate": 111.99,
      "savings_year_3": 855.5,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/miro-to-drawio/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/miro-to-drawio.json"
    },
    {
      "slug": "miro-to-excalidraw",
      "title": "Miro Business to self-hosted Excalidraw",
      "summary": "Excalidraw is a fraction of Miro and runs on almost nothing — but it is a whiteboard, not a workspace, and that distinction decides this one.",
      "category": "whiteboard",
      "verdict": "switch",
      "incumbent": "Miro",
      "incumbent_plan": "Business",
      "seats": 8,
      "alternative": "Excalidraw (self-hosted)",
      "incumbent_annual": 1920,
      "alternative_annual": 241.25,
      "break_even_month": 2,
      "break_even_hourly_rate": 376.77,
      "savings_year_3": 4836.25,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 1.8,
        "verdict": "switch"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/miro-to-excalidraw/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/miro-to-excalidraw.json"
    },
    {
      "slug": "monday-to-openproject",
      "title": "monday.com Pro to self-hosted OpenProject",
      "summary": "monday charges per seat for boards; OpenProject gives you boards, Gantt, wikis and time tracking with no seat count anywhere in the bill.",
      "category": "project-management",
      "verdict": "switch",
      "incumbent": "monday.com",
      "incumbent_plan": "Pro",
      "seats": 15,
      "alternative": "OpenProject (self-hosted)",
      "incumbent_annual": 3420,
      "alternative_annual": 842.5,
      "break_even_month": 3,
      "break_even_hourly_rate": 198.59,
      "savings_year_3": 7132.49,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/monday-to-openproject/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/monday-to-openproject.json"
    },
    {
      "slug": "notion-to-affine",
      "title": "Notion Plus to self-hosted AFFiNE",
      "summary": "AFFiNE merges a document editor with an infinite canvas. At three seats, the question is whether that is worth becoming its operator.",
      "category": "docs-wiki",
      "verdict": "stay",
      "incumbent": "Notion",
      "incumbent_plan": "Plus",
      "seats": 3,
      "alternative": "AFFiNE (self-hosted)",
      "incumbent_annual": 360,
      "alternative_annual": 693.34,
      "break_even_month": null,
      "break_even_hourly_rate": 9.46,
      "savings_year_3": -1500.01,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/notion-to-affine/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/notion-to-affine.json"
    },
    {
      "slug": "notion-to-appflowy",
      "title": "Notion Business to self-hosted AppFlowy",
      "summary": "AppFlowy is the closest open-source shape to Notion. Whether it pays off depends almost entirely on your seat count.",
      "category": "docs-wiki",
      "verdict": "switch",
      "incumbent": "Notion",
      "incumbent_plan": "Business",
      "seats": 5,
      "alternative": "AppFlowy (self-hosted)",
      "incumbent_annual": 1200,
      "alternative_annual": 694.17,
      "break_even_month": 12,
      "break_even_hourly_rate": 77.5,
      "savings_year_3": 1017.49,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/notion-to-appflowy/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/notion-to-appflowy.json"
    },
    {
      "slug": "notion-to-docmost",
      "title": "Notion Business to self-hosted Docmost",
      "summary": "Docmost is the closest open-source thing to a Notion team wiki with real-time editing. It is also newer than Outline.",
      "category": "docs-wiki",
      "verdict": "switch",
      "incumbent": "Notion",
      "incumbent_plan": "Business",
      "seats": 8,
      "alternative": "Docmost (self-hosted)",
      "incumbent_annual": 1920,
      "alternative_annual": 483.34,
      "break_even_month": 4,
      "break_even_hourly_rate": 182.09,
      "savings_year_3": 3909.99,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 2.8,
        "verdict": "switch"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/notion-to-docmost/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/notion-to-docmost.json"
    },
    {
      "slug": "notion-to-outline",
      "title": "Notion Business to self-hosted Outline",
      "summary": "Outline is a narrower product than Notion — a team wiki, not a database — which is exactly why the migration is cheaper.",
      "category": "docs-wiki",
      "verdict": "switch",
      "incumbent": "Notion",
      "incumbent_plan": "Business",
      "seats": 10,
      "alternative": "Outline (self-hosted)",
      "incumbent_annual": 2400,
      "alternative_annual": 422.5,
      "break_even_month": 3,
      "break_even_hourly_rate": 262.79,
      "savings_year_3": 5532.49,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/notion-to-outline/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/notion-to-outline.json"
    },
    {
      "slug": "notion-to-siyuan",
      "title": "Notion Plus to self-hosted SiYuan",
      "summary": "SiYuan runs on almost nothing. At one seat, that still may not be enough to beat paying Notion.",
      "category": "docs-wiki",
      "verdict": "stay",
      "incumbent": "Notion",
      "incumbent_plan": "Plus",
      "seats": 1,
      "alternative": "SiYuan (self-hosted)",
      "incumbent_annual": 120,
      "alternative_annual": 301.25,
      "break_even_month": null,
      "break_even_hourly_rate": 8.64,
      "savings_year_3": -843.75,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/notion-to-siyuan/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/notion-to-siyuan.json"
    },
    {
      "slug": "plausible-cloud-to-self-hosted",
      "title": "Plausible Cloud to self-hosted Plausible CE",
      "summary": "The rare case where the vendor publishes the self-hosting instructions themselves — and the rarer case where the numbers usually say do not bother.",
      "category": "analytics",
      "verdict": "stay",
      "incumbent": "Plausible Analytics (Cloud)",
      "incumbent_plan": "Business",
      "seats": 1,
      "alternative": "Plausible Community Edition (self-hosted)",
      "incumbent_annual": 228,
      "alternative_annual": 692.5,
      "break_even_month": null,
      "break_even_hourly_rate": -1.4,
      "savings_year_3": -1593.51,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/plausible-cloud-to-self-hosted/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/plausible-cloud-to-self-hosted.json"
    },
    {
      "slug": "plausible-to-matomo",
      "title": "Plausible Business to self-hosted Matomo",
      "summary": "Matomo does far more than Plausible and costs far more to run. Whether that is a trade or a downgrade depends entirely on what you actually look at.",
      "category": "analytics",
      "verdict": "stay",
      "incumbent": "Plausible Analytics (Cloud)",
      "incumbent_plan": "Business",
      "seats": 1,
      "alternative": "Matomo (self-hosted)",
      "incumbent_annual": 228,
      "alternative_annual": 725,
      "break_even_month": null,
      "break_even_hourly_rate": 7.36,
      "savings_year_3": -1791.01,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 2.7,
        "verdict": "switch"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/plausible-to-matomo/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/plausible-to-matomo.json"
    },
    {
      "slug": "plausible-to-umami",
      "title": "Plausible Business to self-hosted Umami",
      "summary": "Umami is much lighter to run than Plausible Community Edition, which is the only reason this comparison reads differently from the other one.",
      "category": "analytics",
      "verdict": "stay",
      "incumbent": "Plausible Analytics (Cloud)",
      "incumbent_plan": "Business",
      "seats": 1,
      "alternative": "Umami (self-hosted)",
      "incumbent_annual": 228,
      "alternative_annual": 301.67,
      "break_even_month": null,
      "break_even_hourly_rate": 28.68,
      "savings_year_3": -371,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 2.8,
        "verdict": "switch"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/plausible-to-umami/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/plausible-to-umami.json"
    },
    {
      "slug": "slack-to-rocketchat",
      "title": "Slack Pro to self-hosted Rocket.Chat",
      "summary": "Rocket.Chat is the closest thing to Slack you can run yourself, and seats are where Slack's bill compounds.",
      "category": "team-chat",
      "verdict": "marginal",
      "incumbent": "Slack",
      "incumbent_plan": "Pro",
      "seats": 12,
      "alternative": "Rocket.Chat (self-hosted)",
      "incumbent_annual": 1044,
      "alternative_annual": 843.34,
      "break_even_month": 30,
      "break_even_hourly_rate": 52.22,
      "savings_year_3": 101.99,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 4.9,
        "verdict": "switch"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/slack-to-rocketchat/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/slack-to-rocketchat.json"
    },
    {
      "slug": "slack-to-zulip",
      "title": "Slack Pro to self-hosted Zulip",
      "summary": "Zulip's threaded topics are a different shape of chat — better for decisions, worse for banter, and free of per-seat pricing.",
      "category": "team-chat",
      "verdict": "switch",
      "incumbent": "Slack",
      "incumbent_plan": "Pro",
      "seats": 12,
      "alternative": "Zulip (self-hosted)",
      "incumbent_annual": 1044,
      "alternative_annual": 602.5,
      "break_even_month": 13,
      "break_even_hourly_rate": 73.13,
      "savings_year_3": 874.49,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/slack-to-zulip/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/slack-to-zulip.json"
    },
    {
      "slug": "todoist-to-vikunja",
      "title": "Todoist Business to self-hosted Vikunja",
      "summary": "Todoist Business is cheap per seat, which makes this a genuine test of whether a $96-a-year subscription is worth escaping at all.",
      "category": "tasks",
      "verdict": "switch",
      "incumbent": "Todoist",
      "incumbent_plan": "Business",
      "seats": 6,
      "alternative": "Vikunja (self-hosted)",
      "incumbent_annual": 576,
      "alternative_annual": 300.83,
      "break_even_month": 11,
      "break_even_hourly_rate": 79.66,
      "savings_year_3": 575.5,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 2.7,
        "verdict": "switch"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/todoist-to-vikunja/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/todoist-to-vikunja.json"
    },
    {
      "slug": "vercel-to-caprover",
      "title": "Vercel Pro to self-hosted CapRover",
      "summary": "CapRover is the oldest and calmest of the self-hosted deploy platforms. It is also the least fashionable, which is often a recommendation.",
      "category": "hosting-paas",
      "verdict": "marginal",
      "incumbent": "Vercel",
      "incumbent_plan": "Pro",
      "seats": 4,
      "alternative": "CapRover (self-hosted)",
      "incumbent_annual": 960,
      "alternative_annual": 693.34,
      "break_even_month": 19,
      "break_even_hourly_rate": 61.43,
      "savings_year_3": 399.99,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/vercel-to-caprover/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/vercel-to-caprover.json"
    },
    {
      "slug": "vercel-to-coolify",
      "title": "Vercel Pro to self-hosted Coolify",
      "summary": "Coolify gives you a Vercel-shaped deploy experience on your own VPS. The seat price is only half the story — Vercel's usage billing is the other half.",
      "category": "hosting-paas",
      "verdict": "stay",
      "incumbent": "Vercel",
      "incumbent_plan": "Pro",
      "seats": 3,
      "alternative": "Coolify (self-hosted)",
      "incumbent_annual": 720,
      "alternative_annual": 843.34,
      "break_even_month": null,
      "break_even_hourly_rate": 31.09,
      "savings_year_3": -870.01,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/vercel-to-coolify/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/vercel-to-coolify.json"
    },
    {
      "slug": "vercel-to-dokploy",
      "title": "Vercel Pro to self-hosted Dokploy",
      "summary": "Dokploy is the lighter of the two self-hosted platform-as-a-service options here. The seat price is still only half the story.",
      "category": "hosting-paas",
      "verdict": "switch",
      "incumbent": "Vercel",
      "incumbent_plan": "Pro",
      "seats": 5,
      "alternative": "Dokploy (self-hosted)",
      "incumbent_annual": 1200,
      "alternative_annual": 843.34,
      "break_even_month": 17,
      "break_even_hourly_rate": 62.39,
      "savings_year_3": 569.99,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/vercel-to-dokploy/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/vercel-to-dokploy.json"
    },
    {
      "slug": "zapier-to-activepieces",
      "title": "Zapier Team to self-hosted Activepieces",
      "summary": "Zapier Team is $828 a year before you exceed a single task allowance. That is where self-hosted automation starts to make sense.",
      "category": "automation",
      "verdict": "switch",
      "incumbent": "Zapier",
      "incumbent_plan": "Team",
      "seats": 1,
      "alternative": "Activepieces (self-hosted)",
      "incumbent_annual": 828,
      "alternative_annual": 481.67,
      "break_even_month": 18,
      "break_even_hourly_rate": 67.06,
      "savings_year_3": 539,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/zapier-to-activepieces/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/zapier-to-activepieces.json"
    },
    {
      "slug": "zapier-to-n8n",
      "title": "Zapier Professional to self-hosted n8n",
      "summary": "Zapier bills by task volume; n8n on your own box does not. The crossover depends on how much you automate, not how many people you employ.",
      "category": "automation",
      "verdict": "stay",
      "incumbent": "Zapier",
      "incumbent_plan": "Professional",
      "seats": 1,
      "alternative": "n8n (self-hosted)",
      "incumbent_annual": 239.88,
      "alternative_annual": 421.67,
      "break_even_month": null,
      "break_even_hourly_rate": 13.64,
      "savings_year_3": -945.36,
      "freshness": "fresh",
      "managed": {
        "provider": "PikaPods",
        "monthly_usd": 3.7,
        "verdict": "switch"
      },
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/zapier-to-n8n/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/zapier-to-n8n.json"
    },
    {
      "slug": "zapier-to-windmill",
      "title": "Zapier Team to self-hosted Windmill",
      "summary": "Windmill is automation for people who would rather write a function than drag a box. That suits some teams and rules out others.",
      "category": "automation",
      "verdict": "stay",
      "incumbent": "Zapier",
      "incumbent_plan": "Team",
      "seats": 1,
      "alternative": "Windmill (self-hosted)",
      "incumbent_annual": 828,
      "alternative_annual": 692.09,
      "break_even_month": 62,
      "break_even_hourly_rate": 42.87,
      "savings_year_3": -292.26,
      "freshness": "fresh",
      "managed": null,
      "updated_at": "2026-10-19",
      "url": "https://nimbussage.github.io/exit-cost/e/zapier-to-windmill/",
      "json": "https://nimbussage.github.io/exit-cost/api/escapes/zapier-to-windmill.json"
    }
  ]
}