{
  "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.",
  "publishable": true,
  "block_reason": null,
  "freshness": {
    "state": "fresh",
    "publishable": true,
    "oldest_input_days": 46.5,
    "problems": []
  },
  "incumbent": {
    "vendor": "Notion",
    "vendor_id": "notion",
    "plan": "Plus",
    "plan_id": "plus",
    "amount": 10,
    "period": "month",
    "per_seat": true,
    "billed": "annual",
    "seats": 3,
    "quote": "Plus $10 per member / month",
    "caveat": null,
    "source_url": "https://www.notion.com/pricing",
    "verified_at": "2026-10-19",
    "needs_reverification": false
  },
  "alternative": {
    "name": "AFFiNE (self-hosted)",
    "repo": "toeverything/AFFiNE",
    "project": {
      "full_name": "toeverything/AFFiNE",
      "url": "https://github.com/toeverything/AFFiNE",
      "homepage": "https://affine.pro",
      "description": "There can be more than Notion and Miro. AFFiNE(pronounced [ə‘fain]) is a next-gen knowledge base that brings planning, sorting and creating all together. Privacy first, open-source, customizable and ready to use. ",
      "stars": 73651,
      "forks": 5371,
      "open_issues": 777,
      "license": null,
      "archived": false,
      "pushed_at": "2026-10-12T09:51:10Z",
      "days_since_push": 7,
      "latest_release": {
        "tag": "v0.27.4",
        "published_at": "2026-08-18T16:51:39Z",
        "url": "https://github.com/toeverything/AFFiNE/releases/tag/v0.27.4"
      },
      "days_since_release": 62,
      "health": "active",
      "recommended": true,
      "verified_at": "2026-10-19T10:53:52.539Z"
    },
    "box": {
      "provider": "Vultr",
      "name": "vc2-2c-4gb",
      "id": "vultr:vc2-2c-4gb",
      "vcpu": 2,
      "ram_gb": 4,
      "disk_gb": 80,
      "bandwidth_tb": 3,
      "monthly_usd": 20,
      "url": "https://www.vultr.com/pricing/",
      "verified_at": "2026-10-19T10:53:42.716Z"
    },
    "storage": {
      "id": "backblaze-b2",
      "name": "Backblaze B2",
      "usd_per_gb_month": 0.00695,
      "egress": "free up to 3x stored volume per month, then $0.01/GB",
      "pricing_url": "https://www.backblaze.com/cloud-storage/pricing",
      "quote": "the amount of data stored per byte-hour over the last month at a rate of $6.95/TB/30-day",
      "verified_at": "2026-09-03",
      "verified_by": "human",
      "affiliate": true,
      "gb": 40,
      "monthly_usd": 0.28
    },
    "requirements": {
      "ram_gb": 4,
      "vcpu": 2,
      "disk_gb": 40
    },
    "box_alternatives": [
      {
        "provider": "Vultr",
        "name": "vc2-2c-4gb",
        "monthly_usd": 20,
        "vcpu": 2,
        "ram_gb": 4,
        "disk_gb": 80,
        "url": "https://www.vultr.com/pricing/",
        "chosen": true
      },
      {
        "provider": "Linode",
        "name": "Linode 4GB",
        "monthly_usd": 24,
        "vcpu": 2,
        "ram_gb": 4,
        "disk_gb": 80,
        "url": "https://www.linode.com/pricing/",
        "chosen": false
      },
      {
        "provider": "DigitalOcean",
        "name": "2 vCPU · 4 GB",
        "monthly_usd": 24,
        "vcpu": 2,
        "ram_gb": 4,
        "disk_gb": 80,
        "url": "https://www.digitalocean.com/pricing/droplets",
        "chosen": false
      }
    ],
    "migration_hours": 10,
    "maintenance_hours_per_month": 0.75
  },
  "result": {
    "computable": true,
    "inputs": {
      "seats": 3,
      "horizon_months": 36,
      "hourly_rate": 50
    },
    "incumbent": {
      "cash_monthly": 30,
      "time_monthly": 0,
      "monthly": 30,
      "one_time": 0,
      "annual": 360
    },
    "alternative": {
      "cash_monthly": 20.28,
      "time_monthly": 37.5,
      "monthly": 57.78,
      "one_time": 500,
      "cash_one_time": 0,
      "time_one_time": 500,
      "annual": 693.34
    },
    "delta": {
      "monthly": -27.78,
      "upfront_to_switch": 500,
      "annual": -333.34
    },
    "break_even_month": null,
    "break_even_hourly_rate": 9.46,
    "totals": {
      "at_12_months": {
        "incumbent": 360,
        "alternative": 1193.34
      },
      "at_36_months": {
        "incumbent": 1080,
        "alternative": 2580.01
      },
      "at_horizon": {
        "incumbent": 1080,
        "alternative": 2580.01
      }
    },
    "savings": {
      "year_1": -833.34,
      "year_3": -1500.01,
      "at_horizon": -1500.01
    },
    "verdict": "stay"
  },
  "managed": null,
  "curve": [
    {
      "month": 0,
      "incumbent": 0,
      "alternative": 500
    },
    {
      "month": 1,
      "incumbent": 30,
      "alternative": 557.78
    },
    {
      "month": 2,
      "incumbent": 60,
      "alternative": 615.56
    },
    {
      "month": 3,
      "incumbent": 90,
      "alternative": 673.34
    },
    {
      "month": 4,
      "incumbent": 120,
      "alternative": 731.12
    },
    {
      "month": 5,
      "incumbent": 150,
      "alternative": 788.9
    },
    {
      "month": 6,
      "incumbent": 180,
      "alternative": 846.68
    },
    {
      "month": 7,
      "incumbent": 210,
      "alternative": 904.46
    },
    {
      "month": 8,
      "incumbent": 240,
      "alternative": 962.24
    },
    {
      "month": 9,
      "incumbent": 270,
      "alternative": 1020.02
    },
    {
      "month": 10,
      "incumbent": 300,
      "alternative": 1077.8
    },
    {
      "month": 11,
      "incumbent": 330,
      "alternative": 1135.58
    },
    {
      "month": 12,
      "incumbent": 360,
      "alternative": 1193.36
    },
    {
      "month": 13,
      "incumbent": 390,
      "alternative": 1251.14
    },
    {
      "month": 14,
      "incumbent": 420,
      "alternative": 1308.92
    },
    {
      "month": 15,
      "incumbent": 450,
      "alternative": 1366.7
    },
    {
      "month": 16,
      "incumbent": 480,
      "alternative": 1424.48
    },
    {
      "month": 17,
      "incumbent": 510,
      "alternative": 1482.26
    },
    {
      "month": 18,
      "incumbent": 540,
      "alternative": 1540.04
    },
    {
      "month": 19,
      "incumbent": 570,
      "alternative": 1597.82
    },
    {
      "month": 20,
      "incumbent": 600,
      "alternative": 1655.6
    },
    {
      "month": 21,
      "incumbent": 630,
      "alternative": 1713.38
    },
    {
      "month": 22,
      "incumbent": 660,
      "alternative": 1771.16
    },
    {
      "month": 23,
      "incumbent": 690,
      "alternative": 1828.94
    },
    {
      "month": 24,
      "incumbent": 720,
      "alternative": 1886.72
    },
    {
      "month": 25,
      "incumbent": 750,
      "alternative": 1944.5
    },
    {
      "month": 26,
      "incumbent": 780,
      "alternative": 2002.28
    },
    {
      "month": 27,
      "incumbent": 810,
      "alternative": 2060.06
    },
    {
      "month": 28,
      "incumbent": 840,
      "alternative": 2117.84
    },
    {
      "month": 29,
      "incumbent": 870,
      "alternative": 2175.62
    },
    {
      "month": 30,
      "incumbent": 900,
      "alternative": 2233.4
    },
    {
      "month": 31,
      "incumbent": 930,
      "alternative": 2291.18
    },
    {
      "month": 32,
      "incumbent": 960,
      "alternative": 2348.96
    },
    {
      "month": 33,
      "incumbent": 990,
      "alternative": 2406.74
    },
    {
      "month": 34,
      "incumbent": 1020,
      "alternative": 2464.52
    },
    {
      "month": 35,
      "incumbent": 1050,
      "alternative": 2522.3
    },
    {
      "month": 36,
      "incumbent": 1080,
      "alternative": 2580.08
    }
  ],
  "sensitivity": [
    {
      "hourly_rate": 0,
      "verdict": "switch",
      "break_even_month": 0,
      "savings_at_horizon": 349.99
    },
    {
      "hourly_rate": 25,
      "verdict": "stay",
      "break_even_month": null,
      "savings_at_horizon": -575.01
    },
    {
      "hourly_rate": 50,
      "verdict": "stay",
      "break_even_month": null,
      "savings_at_horizon": -1500.01
    },
    {
      "hourly_rate": 75,
      "verdict": "stay",
      "break_even_month": null,
      "savings_at_horizon": -2425.01
    },
    {
      "hourly_rate": 100,
      "verdict": "stay",
      "break_even_month": null,
      "savings_at_horizon": -3350.01
    },
    {
      "hourly_rate": 150,
      "verdict": "stay",
      "break_even_month": null,
      "savings_at_horizon": -5200.01
    },
    {
      "hourly_rate": 200,
      "verdict": "stay",
      "break_even_month": null,
      "savings_at_horizon": -7050.01
    }
  ],
  "tradeoffs": {
    "you_lose": [
      "Notion databases, relations and rollups",
      "A decade of templates, integrations and institutional familiarity",
      "Notion AI"
    ],
    "you_gain": [
      "A whiteboard and a document editor in the same file, which Notion does not offer",
      "Local-first storage with real offline editing",
      "No per-seat cost"
    ]
  },
  "caveats": [
    "AFFiNE moves fast and its self-hosted releases have been less stable than the hosted product. Pin a version and read the upgrade notes before every bump.",
    "Three seats of Notion Plus is $360 a year. That is a low bar for a VPS plus your hours to clear, and this page will often say so."
  ],
  "category": "docs-wiki",
  "updated_at": "2026-10-19"
}