ICP canisters and cycles explained: what hosting on the Internet Computer really costs

A plain-language guide to canisters and cycles on the Internet Computer, with the current price list, a worked first-year cost for a small website, and what happens when a canister runs low.

By the Webstead team · 6 min read

Key takeaways

  • A canister is the Internet Computer's unit of software: WebAssembly code plus its own memory, replicated across a subnet of nodes and addressed by a canister ID.
  • Cycles are the fuel canisters burn for storage, computation and messages. The price is pegged: 1 trillion cycles (1T) always costs 1 XDR, about $1.37, whatever ICP's market price does.
  • ICP uses a reverse gas model: the canister pays, not the visitor. Page views are query calls, and query calls are free.
  • On a standard 13-node subnet, creating a canister costs 0.5T cycles (≈ $0.68) and storage costs about 4T cycles per GiB per year (≈ $5.47).
  • A small static website costs roughly 3T cycles, about $4, for its whole first year, most of it one-off setup.
  • A canister freezes when its balance falls below the freezing threshold (30 days of idle cost by default) and is uninstalled if it reaches zero, so the number to watch is runway in days.

Every explanation of the Internet Computer eventually reaches two words that sound like jargon: canisters and cycles. They are the two ideas you need to understand what running a website or app on ICP involves, and what it costs. This guide defines both, lists the current prices, and works through the real bill for a small website.

What is a canister?

A canister is the Internet Computer's unit of software. It is WebAssembly code bundled with the memory that code works on, deployed to a subnet: a group of independent nodes that each run the canister and agree on its state through consensus. A standard application subnet has 13 nodes; larger "fiduciary" subnets have 34.

Think of it as a smart contract that can also be a web server. A canister can store data, serve HTTP, call other canisters and keep running indefinitely, as long as it has cycles.

PropertyWhat it means
CodeA WebAssembly module, typically compiled from Motoko or Rust.
Heap memoryUp to 4 GiB (wasm32) or 6 GiB (wasm64).
Stable memoryUp to 500 GiB, kept across code upgrades, if the subnet has room.
Canister IDA permanent address, e.g. xxxxx-xxxxx-xxxxx-xxxxx-cai, used in URLs like <id>.icp0.io.
ControllersThe principals allowed to upgrade, top up, stop or delete it.
Cycles balanceThe canister's own prepaid fuel tank.

A website uses one special kind: the asset canister, which stores your HTML, CSS, JavaScript and images and answers browser requests with certified responses. Apps with their own logic add one or more backend canisters next to it.

What are cycles?

Cycles are what canisters spend to run. Every second a canister pays for the memory it occupies; every message it processes and every instruction it executes costs a little more. It is the same idea as gas on Ethereum, with two differences that matter a great deal for hosting.

First, the price is pegged. Cycles are created by converting ICP tokens, but the conversion is fixed to a basket of currencies: 1 trillion cycles (written 1T) always costs 1 XDR, the IMF's Special Drawing Right. At the rate the ICP docs use (May 2026, 1 XDR = $1.366430), 1T cycles is about $1.37. When ICP's market price doubles or halves, you get fewer or more cycles per token, but what your site costs to run in dollars stays the same.

Second, the canister pays, not the user. ICP uses a reverse gas model: visitors don't need tokens, a wallet or an account to load your site. The developer funds the canister and the canister covers its own costs. Ordinary page views go further than that: they are query calls, and query calls are currently free.

How cycles get into a canister

  1. ICP tokensBought on an exchange; price floats.
  2. Mint cyclesConverted at a fixed rate: 1T cycles = 1 XDR (≈ $1.37).
  3. Canister balanceCycles sit inside the canister, like a prepaid meter.
  4. BurnStorage every second, plus compute and messages. Page views (queries) are free.
Four steps: ICP tokens are bought on an exchange, minted into cycles at the fixed XDR rate, held as a canister's balance, then burned for storage, compute and messages. Page views are free.
  1. Buy ICP on an exchange.
  2. Mint cycles. Send the ICP to your identity's ledger account and convert it, e.g. icp cycles mint --icp 2 -n ic. The cycles are credited to your principal on the cycles ledger, not to a wallet canister.
  3. Fund a canister. New canisters are created with an initial balance; existing ones are topped up with icp canister top-up <canister-id> --amount <cycles> -n ic. Anyone can top up any canister. Only controllers can change it.
  4. Burn. The network deducts storage costs continuously and execution costs per message.

The ICP price list (2026)

These are the main charges on a 13-node application subnet, from the ICP cycles cost reference. On a 34-node subnet, every figure is roughly 2.6× higher. Dollar values use 1 XDR = $1.366430.

OperationCycles (13-node subnet)Approx. USD
Query call (e.g. a page view)FreeFree
Create a canister500,000,000,000 (0.5T)$0.68
Store 1 GiB for one second127,000$0.000000174
Store 1 GiB for 30 days~329 billion$0.45
Store 1 GiB for a year~4.0T$5.47
Update message, base fee5,000,000$0.0000068
Execute 1 billion instructions1,000,000,000$0.00137
Receive an ingress message1,200,000 + 2,000 per byte$0.0000016 + bytes

The figure that dominates for websites is storage, and even that is cheap: a gigabyte for a year costs about the price of a coffee.

Worked example: a small website's first year

Take a typical marketing site or portfolio: a few dozen pages and images built with Astro or Vite, deployed to one asset canister on a 13-node subnet.

Create the canister (one-off)0.5T · ≈ $0.68
Install + first upload (one-off, observed)0.6T · ≈ $0.82
Run for a year (~5B cycles/day)1.8T · ≈ $2.46
Page views (query calls)Free
First year, all in≈ 2.9T · ≈ $3.96
Bar chart of first-year cycles for a small static site: 0.5T to create the canister, about 0.6T to install it and upload files, about 1.8T to run for a year at roughly 5 billion cycles a day, and nothing for page views. Total about 2.9T, around $4.
  • Creating the canister: 0.5T (≈ $0.68), once. This is the fixed creation fee.
  • Installing and uploading: about 0.5–0.8T, once. Installing the asset canister's code and uploading files is execution work. On Webstead's mainnet deploys this step has consistently needed half a trillion cycles or more, which is why we provision at least 1T for every new site.
  • Running for a year: about 1.8T (≈ $2.50). Webstead plans with roughly 5 billion cycles a day for a small static site. That is deliberately conservative: the canister pays for its whole memory footprint (its own code, your files, their compressed versions and the certification data), not just the size of your dist folder, plus routine activity. Your measured burn may well be lower.
  • Traffic: free. Page views are query calls. A viral day doesn't change the bill.

Total: roughly 2.9T cycles, about $4, for the first year, and around $2.50 a year after that if nothing changes. You also need to keep a buffer above the freezing threshold, about 30 days of burn (~0.15T here), which isn't spent but must stay in the tank.

Other shapes, for comparison:

ScenarioRough cyclesRough cost
1 GiB of extra media stored for a year~4T~$5.47
AI-built app with a Motoko backend + frontend (two canisters), setup~2.25T total, ~1–1.3T per canister~$3
The same on a 34-node subnet~2.6× any figure above~2.6×

The two-canister figure is what Webstead observed deploying apps exported from the Caffeine AI builder, where installing the backend's code is the biggest single cost.

What happens when a canister runs low

Freezing threshold (30 days of burn by default)Top-upFrozenDay 0Day 120
A canister's balance over 120 days: it slopes down, jumps after a top-up on day 40, then runs down until it crosses the dashed freezing threshold near day 105, where the canister becomes frozen.

A canister doesn't fail the moment it hits zero. The protocol builds in a reserve called the freezing threshold, set in time rather than cycles: by default 30 days (2,592,000 seconds) of the canister's idle cost.

StateBalanceWhat visitors see
HealthyComfortably above the thresholdThe site works normally.
LowApproaching the thresholdStill works; time to top up.
FrozenBelow the freezing thresholdRequests are rejected, so the site is offline. Data is intact; a top-up brings it back.
UninstalledReached zeroCode and memory are deleted. The canister ID and controllers remain, but the content is gone.

This is why a raw balance is the wrong number to stare at. "0.4T cycles" says nothing about safety on its own; "about 80 days at the current burn rate" does. Runway, the balance divided by the daily burn, is the metric that tells you when to act.

How to keep a canister funded

  • Do it yourself. Check the balance with icp canister status <canister-id> -n ic, and top up with icp canister top-up <canister-id> --amount <cycles> -n ic well before the runway gets short. Set a calendar reminder or script an alert; nothing will warn you by default.
  • Raise the threshold. For something important, controllers can raise the freezing threshold to 90 days or more, so the canister freezes earlier and leaves more time before anything is deleted.
  • Use a managed host. Webstead probes every site's canister regularly, shows its runway in days, emails the owner before it gets low, and can top it up automatically within a monthly budget. During the beta, Webstead funds the cycles itself.

Cycles vs. a traditional hosting bill

Traditional hostInternet Computer
How you payMonthly invoice or planPrepaid cycles in the canister
Price stabilitySet by the provider, can changePegged to XDR by the protocol
Traffic spikesCan trigger bandwidth overagesPage views are free query calls
Running outCard declined, account suspendedCanister freezes, then is uninstalled at zero
Who can payThe account holderAnyone can top up any canister

The short version

A canister is your site or app as a running, replicated program; cycles are the prepaid, price-stable fuel it burns. For a website, the bill is a couple of one-off setup costs and a small, predictable storage charge, with traffic free. Most of the effort isn't paying for cycles; it's remembering to. That part is what a managed ICP host is for.

Frequently asked questions

What is a canister on the Internet Computer?

A canister is a program running on the Internet Computer: compiled WebAssembly code bundled with its own memory (up to 4 GiB of heap for wasm32, 6 GiB for wasm64, and up to 500 GiB of stable memory). It runs on a subnet of replicated nodes, has a unique canister ID, is managed by one or more controllers, and pays for its resources from its own cycles balance.

What are cycles on ICP?

Cycles are the unit canisters use to pay for computation, storage and network messages. They are created by converting ICP tokens at a fixed rate of 1 trillion cycles per XDR, so their price in real money stays stable even when ICP's token price moves.

How much does 1 trillion cycles cost?

1 trillion cycles costs 1 XDR, the IMF's Special Drawing Right. At the May 2026 rate used in the ICP docs (1 XDR = $1.366430), that is about $1.37.

How much does it cost to host a website on ICP?

For a small static site on a 13-node subnet, expect about 0.5T cycles to create the canister, about 0.5–0.8T to install it and upload files, and on the order of 5 billion cycles a day to keep it running. That is roughly 3T cycles, about $4, for the first year and about $2.50 a year after that. Page views are free.

Do visitors pay cycles to view an ICP website?

No. ICP uses a reverse gas model, so the canister, not the user, pays. Page views are served as query calls, which are currently free, so traffic doesn't drain the balance the way it would on a bandwidth-billed host.

What is the freezing threshold?

The freezing threshold is a safety reserve, set in seconds rather than cycles. By default it is 30 days (2,592,000 seconds): once a canister's balance falls below what it would need to pay for 30 days of idle cost, it freezes and stops processing requests, which keeps the reserve for storage while you top up.

What happens when a canister runs out of cycles?

Below the freezing threshold the canister is frozen and rejects new requests, so a website goes offline but its data is intact; a top-up unfreezes it. If the balance eventually reaches zero, the canister's code and memory are uninstalled. Its ID and controllers survive, but the content is gone.

How do I buy cycles?

Buy ICP on an exchange, send it to your identity's ledger account, and convert it with icp-cli: icp cycles mint --icp <amount> -n ic. The cycles are credited to your principal on the cycles ledger, and you move them into a canister with icp canister top-up. Managed hosts like Webstead handle this for you.

Put your site on the Internet Computer

Connect a GitHub repo or upload a folder. Webstead creates the canister, funds the cycles and wires up your domain. Free during the beta.