<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: HostingSift</title>
    <description>The latest articles on DEV Community by HostingSift (@hostingsift).</description>
    <link>https://dev.to/hostingsift</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3781248%2Fb9ccc1bf-a147-491d-a8ef-32f6dcafac23.png</url>
      <title>DEV Community: HostingSift</title>
      <link>https://dev.to/hostingsift</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hostingsift"/>
    <language>en</language>
    <item>
      <title>Vercel AI SDK Alternatives and Where to Host Them in 2026</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Mon, 21 Sep 2026 08:30:22 +0000</pubDate>
      <link>https://dev.to/hostingsift/vercel-ai-sdk-alternatives-and-where-to-host-them-in-2026-13j4</link>
      <guid>https://dev.to/hostingsift/vercel-ai-sdk-alternatives-and-where-to-host-them-in-2026-13j4</guid>
      <description>&lt;p&gt;&lt;em&gt;Updated 21 September 2026. Hetzner &lt;a href="https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/" rel="noopener noreferrer"&gt;raised its cloud prices on 15 June 2026&lt;/a&gt;, and the shared CX plans this guide first recommended are not in its current price list. Every VPS price below was re-checked on the providers' own pages on 21 September 2026. Hetzner lists prices excluding VAT, with the primary IPv4 address billed separately at €0.50. netcup lists prices including 19% German VAT, with IPv4 included.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Vercel AI SDK is great. It is also locked to a specific philosophy of how AI apps should be built, and it strongly incentivizes you to host on Vercel where you will quickly discover that real AI workloads run into Vercel's pricing in unhappy ways. A $20 Vercel bill becomes a $200 bill the first month an agent loop runs hot.&lt;/p&gt;

&lt;p&gt;If you are looking at alternatives, you are not alone. The AI framework ecosystem in 2026 has more credible options than at any point since LangChain shipped. Some are better for agents. Some are better for type safety. Some give you the AI SDK ergonomics without the Vercel gravity well. And the hosting decision for each is different.&lt;/p&gt;

&lt;p&gt;This is a working engineer's tour of the alternatives, where they shine, and where to actually deploy them without burning money.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Vercel AI SDK does well, and where it forces your hand
&lt;/h2&gt;

&lt;p&gt;The good parts: streaming responses out of the box, clean React hooks (&lt;code&gt;useChat&lt;/code&gt;, &lt;code&gt;useCompletion&lt;/code&gt;), a unified provider abstraction so swapping OpenAI for Anthropic is a one-line change. Tool calling is well-designed. The TypeScript types are tight.&lt;/p&gt;

&lt;p&gt;The friction: the SDK assumes Next.js as the primary host. Server actions and route handlers are the recommended patterns. The moment you want to host the backend somewhere other than Vercel, you start fighting the framework. Vercel Functions also enforce a &lt;a href="https://vercel.com/docs/functions/configuring-functions/duration" rel="noopener noreferrer"&gt;hard maximum duration&lt;/a&gt;. With Fluid compute, which is on by default, Hobby functions stop at 5 minutes. Pro functions can be configured up to 800 seconds, or 30 minutes with the extended-duration beta. That is plenty for a chat reply and tight for an agent that works through a long task list. Long-running agent loops need workarounds (background jobs, queue-and-poll patterns) that erase the simplicity argument.&lt;/p&gt;

&lt;p&gt;Pricing is the second issue. Vercel charges by function invocation, GB-hours, and bandwidth. AI streaming chews bandwidth. Agent loops chew invocations. The pricing model that works beautifully for a marketing site quickly stops working for a chatbot with a thousand daily users.&lt;/p&gt;

&lt;h2&gt;
  
  
  The alternatives worth considering
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mastra (TypeScript-first agent framework)
&lt;/h3&gt;

&lt;p&gt;Mastra is the most direct AI SDK competitor that emerged in 2024-2025. Built by the Gatsby founders. Pure TypeScript, designed for agents from day one. Workflows are first-class. Memory and RAG are built in. Deploy targets include Cloudflare Workers, Vercel, AWS Lambda, and any Node-compatible host.&lt;/p&gt;

&lt;p&gt;What you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step-based workflow engine with retries, branching, parallelization.&lt;/li&gt;
&lt;li&gt;First-class memory (Postgres, Pinecone, in-memory, all swappable).&lt;/li&gt;
&lt;li&gt;Tool definitions with Zod schemas, type-checked end to end.&lt;/li&gt;
&lt;li&gt;Built-in eval framework for grading agent outputs.&lt;/li&gt;
&lt;li&gt;Deploy command targets Cloudflare, Vercel, Netlify, or self-hosted Node.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Best deploy target for Mastra: Cloudflare Workers if your agents are short-lived, a small VPS if they run long or need persistent state. A &lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;netcup&lt;/a&gt; VPS 500 G12 (2 vCores, 4 GB RAM) at €5.91 per month runs production Mastra agents fine.&lt;/p&gt;

&lt;h3&gt;
  
  
  LangChain and LangGraph
&lt;/h3&gt;

&lt;p&gt;LangChain is the obvious one. In 2026 the conversation has shifted to LangGraph as the recommended LangChain entry point for new projects, especially for agents. LangGraph treats agent runs as state machines, which makes complex flows tractable and debuggable.&lt;/p&gt;

&lt;p&gt;The frame here is different from the AI SDK. LangChain is a Python-first framework with a TypeScript port that is always one version behind. If your team is Python-native, LangChain or LangGraph plus LangSmith for observability is a strong stack. If your team is TypeScript-native, Mastra is usually a better fit and Vercel AI SDK is competitive too.&lt;/p&gt;

&lt;p&gt;Deploy target: LangGraph has its own Cloud hosting product (LangGraph Cloud), or you self-host the runtime on any Python-capable VPS. For self-hosting, a 4 GB VPS handles most workloads. The netcup VPS 500 G12 (4 GB) at €5.91 or a &lt;a href="https://hostingsift.com/hosting/digitalocean" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt; Basic droplet with 2 GB at $12 are both fine starting points.&lt;/p&gt;

&lt;h3&gt;
  
  
  LlamaIndex
&lt;/h3&gt;

&lt;p&gt;The strongest framework if your problem is "I have a lot of documents and I need agents that answer questions over them." LlamaIndex started as a RAG-first toolkit and grew into a general agent framework while keeping that document-heavy DNA.&lt;/p&gt;

&lt;p&gt;If you are building a knowledge worker assistant, internal-docs Q&amp;amp;A, customer support over a help center, LlamaIndex usually beats the alternatives because the ingestion, chunking, and retrieval primitives are more thoughtful.&lt;/p&gt;

&lt;p&gt;Deploy target: any Python host. LlamaIndex itself is light. The expensive part is the vector store, which dictates your real hosting choice. If you use Postgres pgvector, your Postgres instance is the bottleneck. If you use Pinecone or Qdrant, your bill is in the vector DB.&lt;/p&gt;

&lt;h3&gt;
  
  
  PydanticAI
&lt;/h3&gt;

&lt;p&gt;The newest credible entrant. Built by the Pydantic team. Heavy emphasis on type safety, model-agnostic abstraction, and structured outputs. If you already use Pydantic for validation (and most Python AI teams do), PydanticAI fits naturally.&lt;/p&gt;

&lt;p&gt;What is notable: PydanticAI was designed after the lessons from LangChain. It is smaller, less opinionated, easier to read. The tradeoff is that it provides fewer batteries-included features. You bring your own memory, your own retrieval, your own observability. Many teams prefer this.&lt;/p&gt;

&lt;p&gt;Deploy target: any Python host. Small footprint. A 2 GB VPS at $6/month or less is more than enough for most projects. Our &lt;a href="https://hostingsift.com/category/vps-hosting" rel="noopener noreferrer"&gt;VPS price comparison&lt;/a&gt; lists the current options.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenAI Agents SDK
&lt;/h3&gt;

&lt;p&gt;OpenAI released their own agents framework in 2025. It is well-designed if you are exclusively on OpenAI models. It supports handoffs between agents, structured tool use, and tracing through OpenAI's observability dashboard. The tradeoff is obvious: deeper OpenAI lock-in.&lt;/p&gt;

&lt;p&gt;If you are committed to GPT models long term, the Agents SDK is the path of least resistance. If you want flexibility to swap to Claude, Gemini, DeepSeek, or self-hosted models, look elsewhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anthropic SDK directly (no framework)
&lt;/h3&gt;

&lt;p&gt;Worth saying out loud: a lot of teams who started with a framework end up dropping it and calling the model SDK directly. The Anthropic SDK and OpenAI SDK are both small, well-documented, and stable. If your app is a single agent loop with a handful of tools, framework overhead can hurt more than help.&lt;/p&gt;

&lt;p&gt;The Anthropic SDK in particular handles tool use, streaming, and parallel calls with a clean API. Combined with Hono or Elysia for the HTTP layer, you can ship production AI features with fewer dependencies than the AI SDK pulls in.&lt;/p&gt;

&lt;p&gt;Deploy target: anywhere. Hono runs on Bun, Node, Cloudflare Workers, Deno, AWS Lambda. The same code deploys to all of them. We use this exact pattern at HostingSift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side-by-side: when each one wins
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Framework&lt;/th&gt;
&lt;th&gt;Language&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;th&gt;Hosting fit&lt;/th&gt;
&lt;th&gt;Lock-in&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Vercel AI SDK&lt;/td&gt;
&lt;td&gt;TypeScript&lt;/td&gt;
&lt;td&gt;Next.js chat UIs&lt;/td&gt;
&lt;td&gt;Vercel (others possible but painful)&lt;/td&gt;
&lt;td&gt;High to Vercel patterns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mastra&lt;/td&gt;
&lt;td&gt;TypeScript&lt;/td&gt;
&lt;td&gt;Agents with workflows&lt;/td&gt;
&lt;td&gt;Anywhere Node runs&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LangGraph&lt;/td&gt;
&lt;td&gt;Python (TS port)&lt;/td&gt;
&lt;td&gt;Complex agent graphs&lt;/td&gt;
&lt;td&gt;LangGraph Cloud or self-host&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LlamaIndex&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;RAG-heavy applications&lt;/td&gt;
&lt;td&gt;Any Python host&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PydanticAI&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;Type-safe minimalist agents&lt;/td&gt;
&lt;td&gt;Any Python host&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI Agents SDK&lt;/td&gt;
&lt;td&gt;Python and TS&lt;/td&gt;
&lt;td&gt;OpenAI-committed teams&lt;/td&gt;
&lt;td&gt;Anywhere&lt;/td&gt;
&lt;td&gt;High to OpenAI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Direct SDK + Hono&lt;/td&gt;
&lt;td&gt;TypeScript&lt;/td&gt;
&lt;td&gt;Custom architecture&lt;/td&gt;
&lt;td&gt;Anywhere&lt;/td&gt;
&lt;td&gt;Minimal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Where to host the backend, by use case
&lt;/h2&gt;

&lt;p&gt;The VPS picks in this section changed after Hetzner's June 2026 repricing. Here is what the plans mentioned below cost on 21 September 2026, as each provider lists them.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;CPU&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;Price per month&lt;/th&gt;
&lt;th&gt;Billing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;netcup&lt;/a&gt; VPS 500 G12&lt;/td&gt;
&lt;td&gt;2 vCores&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;€5.91 incl. VAT&lt;/td&gt;
&lt;td&gt;12-month term; €6.81 without a term&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;netcup RS 1000 G12&lt;/td&gt;
&lt;td&gt;4 dedicated cores&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;€12.79 incl. VAT&lt;/td&gt;
&lt;td&gt;12-month minimum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;netcup VPS 2000 G12&lt;/td&gt;
&lt;td&gt;8 vCores&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;€19.25 incl. VAT&lt;/td&gt;
&lt;td&gt;12-month term&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;netcup RS 2000 G12&lt;/td&gt;
&lt;td&gt;8 dedicated cores&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;€21.43 incl. VAT&lt;/td&gt;
&lt;td&gt;12-month minimum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt; CPX22&lt;/td&gt;
&lt;td&gt;2 vCPUs&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;€19.49 excl. VAT&lt;/td&gt;
&lt;td&gt;Hourly, no minimum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hetzner CCX13&lt;/td&gt;
&lt;td&gt;2 dedicated vCPUs&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;€42.99 excl. VAT&lt;/td&gt;
&lt;td&gt;Hourly, no minimum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hetzner CPX42&lt;/td&gt;
&lt;td&gt;8 vCPUs&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;€69.49 excl. VAT&lt;/td&gt;
&lt;td&gt;Hourly, no minimum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hetzner CCX23&lt;/td&gt;
&lt;td&gt;4 dedicated vCPUs&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;€85.99 excl. VAT&lt;/td&gt;
&lt;td&gt;Hourly, no minimum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://hostingsift.com/hosting/vultr" rel="noopener noreferrer"&gt;Vultr&lt;/a&gt; Cloud Compute&lt;/td&gt;
&lt;td&gt;1 vCPU&lt;/td&gt;
&lt;td&gt;1 GB&lt;/td&gt;
&lt;td&gt;$6&lt;/td&gt;
&lt;td&gt;Hourly, no minimum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DigitalOcean Basic&lt;/td&gt;
&lt;td&gt;1 vCPU&lt;/td&gt;
&lt;td&gt;1 GB&lt;/td&gt;
&lt;td&gt;$6&lt;/td&gt;
&lt;td&gt;Hourly, no minimum&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The trade-off is commitment. netcup is far cheaper per core and per GB, but its regular prices assume a 12-month contract. Hetzner, Vultr and DigitalOcean bill by the hour, which matters when you are still experimenting and may tear the server down next week.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chat UI with streaming, low to medium traffic
&lt;/h3&gt;

&lt;p&gt;Cloudflare Workers is the right answer for most teams. Long-running streams work. Global edge means low latency. The free tier covers a surprising amount of traffic, and the $5 paid tier covers an unsurprising amount. Mastra, PydanticAI (via Pyodide-Workers patterns), and Hono with the Anthropic SDK all deploy here cleanly.&lt;/p&gt;

&lt;p&gt;If you need persistent server-side state across requests, drop down to a VPS. netcup VPS 500 G12 at €5.91, Vultr Cloud Compute at $6, or DigitalOcean Basic at $6 all work. Pair with Caddy for TLS and you have a streaming-capable backend for about 6 EUR or 6 USD per month.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agent loops with long runs
&lt;/h3&gt;

&lt;p&gt;Stay away from anything with a hard duration cap you cannot raise. Vercel Hobby stops at 5 minutes. Vercel Pro reaches 800 seconds, or 30 minutes in beta, which covers many agent runs but not open-ended ones. Most Lambda configurations are out unless you split into step functions.&lt;/p&gt;

&lt;p&gt;What works: PaaS platforms that run long-lived processes (&lt;a href="https://hostingsift.com/hosting/railway" rel="noopener noreferrer"&gt;Railway&lt;/a&gt;, Render), or a self-hosted VPS. Railway lets you run a long-lived process for $5-10/month. For dedicated cores, the netcup RS 1000 G12 gives you 4 dedicated AMD EPYC 9645 cores and 8 GB of DDR5 for €12.79 per month, on a 12-month minimum term. If you need hourly billing instead, Hetzner's CCX13 with 2 dedicated vCPUs and 8 GB costs €42.99 per month.&lt;/p&gt;

&lt;p&gt;For background agent jobs that take minutes or hours, queue them. BullMQ on Redis, a SQS-equivalent, or a Postgres-backed job runner like Inngest. Trigger from your API, process on a worker process. The worker can live on the same VPS.&lt;/p&gt;

&lt;h3&gt;
  
  
  RAG with vector search
&lt;/h3&gt;

&lt;p&gt;Your hosting bill is dominated by the vector DB, not the application server. Three reasonable approaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Postgres pgvector&lt;/strong&gt; on a beefy VPS. Self-hosted, full control, runs on the same box as your app. A netcup VPS 2000 G12 with 8 vCores and 16 GB RAM at €19.25 handles millions of vectors. Hetzner's nearest orderable shared plan, the CPX42, costs €69.49.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qdrant or Weaviate self-hosted.&lt;/strong&gt; Same hosting math. Slightly better query performance for very large indexes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managed vector DB&lt;/strong&gt; (Pinecone, Qdrant Cloud, Turbopuffer). Trade $50-200/month for zero ops.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most apps with under 5 million chunks should self-host pgvector and move on. Above that, managed services start paying for themselves.&lt;/p&gt;

&lt;h3&gt;
  
  
  High-traffic AI features for B2B SaaS
&lt;/h3&gt;

&lt;p&gt;If you are doing tens of thousands of AI calls per day for paying customers, neither Vercel nor Cloudflare Workers makes sense long-term. The pricing models are designed for variable traffic. Predictable high traffic is cheaper on dedicated resources.&lt;/p&gt;

&lt;p&gt;A netcup RS 2000 G12 (8 dedicated AMD EPYC cores, 16 GB RAM) at €21.43 per month runs a production AI backend with significant headroom. The hourly-billed alternative is Hetzner's CCX23 with 4 dedicated vCPUs and 16 GB at €85.99. Add Cloudflare in front for caching and rate limiting (free tier). On the netcup box you spend under 30 EUR per month for what would be $300+ on serverless.&lt;/p&gt;

&lt;p&gt;The catch is ops. You patch the VPS. You configure Caddy. You set up Postgres backups. Two days of upfront work, then it runs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Edge inference with small models
&lt;/h3&gt;

&lt;p&gt;The 2025-2026 development worth mentioning. Cloudflare Workers AI, Vercel's AI Gateway, and Bun's local model loading have made it realistic to run small models (Llama 3.2 3B, Phi-4, Qwen 2.5 7B) at the edge or directly on a Bun runtime. Latency drops dramatically. Privacy improves.&lt;/p&gt;

&lt;p&gt;For genuinely small workloads, this can collapse your inference bill to near zero. Worth experimenting with if your use case is forgiving (autocomplete, classification, simple summarization). For deeper exploration, see &lt;a href="https://hostingsift.com/blog/self-hosted-llm-5-dollar-vps-2026" rel="noopener noreferrer"&gt;our self-hosted LLM guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Vercel question, head on
&lt;/h2&gt;

&lt;p&gt;Should you actually leave Vercel?&lt;/p&gt;

&lt;p&gt;If you ship a Next.js app with light AI features (a chatbot, occasional summarization, some embedding for search), Vercel is fine. Use the AI SDK. Pay the bill. Move on with your life.&lt;/p&gt;

&lt;p&gt;If your AI use is intense, persistent, or pricing-sensitive, plan the migration now. The good news is that the AI SDK is portable. You can run it on Cloudflare Workers, on Hono on a VPS, on AWS Lambda. The Next.js part is the harder migration, not the AI SDK itself. Tools like Coolify or Dokploy can deploy Next.js on a netcup or Hetzner VPS with Vercel-like ergonomics. We wrote about &lt;a href="https://hostingsift.com/blog/self-hosted-vercel-alternatives-nextjs-2026" rel="noopener noreferrer"&gt;self-hosted Vercel alternatives&lt;/a&gt; in detail.&lt;/p&gt;

&lt;p&gt;The pattern we have seen most often in 2026: keep the marketing site and lightweight pages on Vercel. Move the AI backend and heavy API routes to a Hetzner or Railway-hosted service. Your bandwidth-heavy AI traffic stops counting against Vercel. Your bill drops 70-90%. The split-stack adds some complexity but pays for itself in month one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to actually pick
&lt;/h2&gt;

&lt;p&gt;If you are a TypeScript team building an agent product: Mastra on Cloudflare Workers or a small European VPS from netcup or Hetzner. Modern, flexible, no lock-in.&lt;/p&gt;

&lt;p&gt;If you are a Python team building agents: LangGraph if you need complex flows and tooling, PydanticAI if you want minimal and type-safe. Either runs on any cheap VPS.&lt;/p&gt;

&lt;p&gt;If you are RAG-heavy: LlamaIndex on Python with pgvector on the same VPS. Often the entire stack runs on one VPS under 10 EUR, such as a netcup VPS 500 G12 at €5.91.&lt;/p&gt;

&lt;p&gt;If you are OpenAI-committed and shipping fast: OpenAI Agents SDK, host anywhere.&lt;/p&gt;

&lt;p&gt;If your needs are simple and you hate framework churn: Anthropic or OpenAI SDK directly, Hono for the HTTP layer, deploy to whatever you already pay for.&lt;/p&gt;

&lt;p&gt;If you are starting today, on Next.js, with light AI needs: Vercel AI SDK is still the path of least resistance. Just keep an eye on the bill.&lt;/p&gt;

&lt;p&gt;The choice of framework matters less than the discipline to actually measure what your AI features cost per active user. That measurement is what will tell you when to migrate, where to migrate to, and whether the migration is worth your team's time. Build the dashboard before you need it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://hostingsift.com/blog/vercel-ai-sdk-alternatives-where-to-host-2026" rel="noopener noreferrer"&gt;hostingsift.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>hosting</category>
      <category>webdev</category>
      <category>performance</category>
    </item>
    <item>
      <title>AMD vs Intel Dedicated Servers in 2026: 109 Plans Priced per Core</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Mon, 21 Sep 2026 07:55:26 +0000</pubDate>
      <link>https://dev.to/hostingsift/amd-vs-intel-dedicated-servers-in-2026-109-plans-priced-per-core-ng9</link>
      <guid>https://dev.to/hostingsift/amd-vs-intel-dedicated-servers-in-2026-109-plans-priced-per-core-ng9</guid>
      <description>&lt;p&gt;Search for &lt;strong&gt;AMD vs Intel dedicated server&lt;/strong&gt; and you get a dozen vendor blogs arguing architecture. Zen 5 against Granite Rapids, IPC deltas per watt. Almost none of them print a price, and not one prints a competitor's price. So we did the boring version: took every dedicated server in our database on 21 September 2026, looked up the actual CPU model in each one, counted the physical cores, and divided.&lt;/p&gt;

&lt;p&gt;The result is not what the vendor essays imply. Intel cores are cheaper. Median &lt;strong&gt;$9.68 per physical core per month&lt;/strong&gt; against AMD's &lt;strong&gt;$13.06&lt;/strong&gt;, a 26% gap in Intel's favour across 106 plans at 12 hosts.&lt;/p&gt;

&lt;p&gt;Then you look at what those Intel cores actually are. The median Intel chip on sale is from &lt;strong&gt;2019&lt;/strong&gt;. The median AMD chip is from &lt;strong&gt;2022&lt;/strong&gt;. Nearly two thirds of the Intel inventory runs silicon launched in 2019 or earlier, against a fifth of the AMD inventory. What reads as a vendor discount is mostly a discount on age.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is in the sample
&lt;/h2&gt;

&lt;p&gt;Snapshot taken 21 September 2026, 01:33 UTC, from our nightly scrape.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;215&lt;/strong&gt; active dedicated plans with a price, across 21 providers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;167&lt;/strong&gt; of them currently orderable (the rest are catalogue entries their host lists as out of stock)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;109&lt;/strong&gt; orderable plans name a CPU we can identify and a core count, across 12 hosts&lt;/li&gt;
&lt;li&gt;Three of those 109 carry a GPU that sets the price rather than the CPU (Hetzner GEX45 and GEX131, OVHcloud RISE-GPU-1). They are held out of every median below, which leaves &lt;strong&gt;106&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;A further 58 orderable plans publish a core count but no CPU model, so they appear in the price-per-core ranking and nowhere in the vendor or generation cuts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Core counts are physical cores, never threads. Where the plan text gives a number we use it; where it does not (OVHcloud and InMotion publish model names only) we take the count from the part's spec sheet. Euro prices convert at a flat 1.15 and are quoted in euro as well, because that is what the invoice says.&lt;/p&gt;

&lt;h2&gt;
  
  
  Price per core by chip launch year
&lt;/h2&gt;

&lt;p&gt;Forget the logos for a moment and sort the same 106 plans by the year their processor shipped.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;CPU launch era&lt;/th&gt;
&lt;th&gt;Plans&lt;/th&gt;
&lt;th&gt;Median $/core/mo&lt;/th&gt;
&lt;th&gt;Cheapest&lt;/th&gt;
&lt;th&gt;Dearest&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2011 to 2016&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;$9.99&lt;/td&gt;
&lt;td&gt;$6.25&lt;/td&gt;
&lt;td&gt;$30.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2017 to 2019&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;$9.10&lt;/td&gt;
&lt;td&gt;$2.82&lt;/td&gt;
&lt;td&gt;$43.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020 to 2022&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;$12.79&lt;/td&gt;
&lt;td&gt;$5.32&lt;/td&gt;
&lt;td&gt;$45.31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023 to 2025&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;$14.23&lt;/td&gt;
&lt;td&gt;$4.85&lt;/td&gt;
&lt;td&gt;$49.17&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A core from 2023 or later costs 56% more than a core from 2017 to 2019. That single column does more work than every vendor-versus-vendor comparison on the first page of Google.&lt;/p&gt;

&lt;p&gt;Now split each era by vendor, which is the comparison the architecture blogs claim to be making.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;CPU launch era&lt;/th&gt;
&lt;th&gt;Intel plans&lt;/th&gt;
&lt;th&gt;Intel median&lt;/th&gt;
&lt;th&gt;AMD plans&lt;/th&gt;
&lt;th&gt;AMD median&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2011 to 2016&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;$9.99&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2017 to 2019&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;$9.01&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;$9.55&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020 to 2022&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;$9.56&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;$15.89&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023 to 2025&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;$16.87&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;$13.72&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two things fall out. In the 2017 to 2019 era the vendors are within 6% of each other, which is noise. And in the newest era the sign flips: Intel's seven current-generation plans are 23% dearer per core than AMD's thirty. The brand premium everyone argues about is real, it just points in different directions depending on which year you shop in, and it is smaller than the gap between any two years.&lt;/p&gt;

&lt;p&gt;There is no AMD column before 2017 because there is no AMD silicon that old on sale. Naples shipped in 2017 and the hosts that still rack pre-2017 boxes are running Xeons.&lt;/p&gt;

&lt;h2&gt;
  
  
  AMD vs Intel inside a single host
&lt;/h2&gt;

&lt;p&gt;Cross-provider medians are useful for shape but they mix datacentres, networks and support tiers. The cleaner test is a host that sells both vendors at the same core count.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Host&lt;/th&gt;
&lt;th&gt;Cores / RAM&lt;/th&gt;
&lt;th&gt;Intel plan&lt;/th&gt;
&lt;th&gt;AMD plan&lt;/th&gt;
&lt;th&gt;Gap&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hetzner&lt;/td&gt;
&lt;td&gt;48c / 128 GB DDR5 ECC&lt;/td&gt;
&lt;td&gt;DX154, Xeon 6741P (2025), €704 / $809.60&lt;/td&gt;
&lt;td&gt;AX162, EPYC 9454P (2022), €614 / $706.10&lt;/td&gt;
&lt;td&gt;Intel +14.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Namecheap&lt;/td&gt;
&lt;td&gt;32c / 128 GB DDR4&lt;/td&gt;
&lt;td&gt;Dual Xeon Gold 5218 (2019), $160.64&lt;/td&gt;
&lt;td&gt;Dual EPYC 7313 (2021), $170.24&lt;/td&gt;
&lt;td&gt;AMD +6.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OVHcloud&lt;/td&gt;
&lt;td&gt;12c / 64-96 GB&lt;/td&gt;
&lt;td&gt;SYS-5, Xeon Silver 4214R (2020), €94.99&lt;/td&gt;
&lt;td&gt;RISE-M, Ryzen 9 9900X (2024), €94.99&lt;/td&gt;
&lt;td&gt;0.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OVHcloud&lt;/td&gt;
&lt;td&gt;8c / 64 GB&lt;/td&gt;
&lt;td&gt;RISE-2, Xeon E-2388G (2021), €61.74&lt;/td&gt;
&lt;td&gt;RISE-S, Ryzen 7 9700X (2024), €61.74&lt;/td&gt;
&lt;td&gt;0.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;8c bare metal&lt;/td&gt;
&lt;td&gt;E-2388G (2021), 128 GB, $350&lt;/td&gt;
&lt;td&gt;EPYC 4345P (2025), 64 GB, $365&lt;/td&gt;
&lt;td&gt;AMD +4.3%, half the RAM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;6c bare metal&lt;/td&gt;
&lt;td&gt;E-2286G (2019), 32 GB, $185&lt;/td&gt;
&lt;td&gt;EPYC 4245P (2025), 32 GB, $295&lt;/td&gt;
&lt;td&gt;AMD +59.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Four of the six gaps are under 15%. Two are zero to the cent. The one big number, Vultr's 6-core pair, is a 2019 Xeon against a 2025 EPYC, so it is a generation gap wearing a vendor costume.&lt;/p&gt;

&lt;p&gt;The Hetzner row has a third plan that makes the point better than any of this. &lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt; sells the &lt;em&gt;same&lt;/em&gt; EPYC 9454P twice: once as AX162 in its own chassis at €614, and once as DX182 in a Dell PowerEdge at €724. Identical processor, identical 48 cores, identical 128 GB of DDR5 ECC. The Dell badge costs €110 a month, which is 17.9%. That is more than Hetzner charges to move you from AMD to Intel at the same core count. The chassis brand is a bigger line item than the CPU brand.&lt;/p&gt;

&lt;p&gt;All three Hetzner figures were checked against hetzner.com on the day of writing, not just against our own scrape: AX162 €614.00, DX154 €704.00, DX182 €724.00, all excluding VAT, all at the German locations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The clearest example: €59 at Hetzner
&lt;/h2&gt;

&lt;p&gt;Hetzner has exactly two dedicated servers at €59.00 a month. They are also the only two of its fifteen with no setup fee.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;CPU&lt;/th&gt;
&lt;th&gt;Launched&lt;/th&gt;
&lt;th&gt;Cores&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;$/core/mo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;EX44&lt;/td&gt;
&lt;td&gt;Intel Core i5-13500&lt;/td&gt;
&lt;td&gt;2023&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;64 GB DDR4&lt;/td&gt;
&lt;td&gt;$4.85&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AX41&lt;/td&gt;
&lt;td&gt;AMD Ryzen 5 3600&lt;/td&gt;
&lt;td&gt;2019&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;64 GB DDR4&lt;/td&gt;
&lt;td&gt;$11.31&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Same price, same memory, 2.3x the cores. If you read only the vendor blogs you would expect the AMD box to be the core-count bargain. It is the opposite, because the i5-13500 is a 2023 hybrid part and the Ryzen 5 3600 is a six-core chip from 2019 that Hetzner has been selling for years.&lt;/p&gt;

&lt;p&gt;One honest qualifier the marketing pages skip: those 14 cores are not 14 of the same thing. The i5-13500 is 6 performance cores plus 8 efficiency cores. For a build farm, a CI runner or anything embarrassingly parallel that is a genuine 14, and at $4.85 a core it is the best modern-silicon deal in the whole sample. For a single-threaded latency workload you have 6 fast cores and 8 helpers. Hetzner's EX63 has the same shape: Core Ultra 7 265, 20 cores, of which 8 are performance cores.&lt;/p&gt;

&lt;p&gt;While we were verifying those two prices on hetzner.com we pulled the setup fees, which no price-per-core table anywhere seems to include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Monthly&lt;/th&gt;
&lt;th&gt;Setup, one off&lt;/th&gt;
&lt;th&gt;Setup as share of one month&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AX41 / EX44&lt;/td&gt;
&lt;td&gt;€59&lt;/td&gt;
&lt;td&gt;€0&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SX65&lt;/td&gt;
&lt;td&gt;€84&lt;/td&gt;
&lt;td&gt;€39&lt;/td&gt;
&lt;td&gt;46%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AX42&lt;/td&gt;
&lt;td&gt;€99&lt;/td&gt;
&lt;td&gt;€49&lt;/td&gt;
&lt;td&gt;49%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EX63&lt;/td&gt;
&lt;td&gt;€149&lt;/td&gt;
&lt;td&gt;€74&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AX162&lt;/td&gt;
&lt;td&gt;€614&lt;/td&gt;
&lt;td&gt;€304&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DX294&lt;/td&gt;
&lt;td&gt;€919&lt;/td&gt;
&lt;td&gt;€459&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Half a month up front on everything except the two €59 boxes. On a three-month project that quietly adds 17% to the bill.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a newer generation costs at the same host
&lt;/h2&gt;

&lt;p&gt;The strongest evidence for the generation thesis is inside a single provider, same vendor, same core count, different silicon year. Only like-for-like billing terms are compared here, because a monthly list price against a two-year committed rate will produce any multiple you want.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Host&lt;/th&gt;
&lt;th&gt;Older&lt;/th&gt;
&lt;th&gt;Newer&lt;/th&gt;
&lt;th&gt;Multiple&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://hostingsift.com/hosting/interserver" rel="noopener noreferrer"&gt;InterServer&lt;/a&gt;, 24c EPYC, monthly&lt;/td&gt;
&lt;td&gt;7402P (2019), $399&lt;/td&gt;
&lt;td&gt;9254 (2022), $720&lt;/td&gt;
&lt;td&gt;1.80x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://hostingsift.com/hosting/liquidweb" rel="noopener noreferrer"&gt;Liquid Web&lt;/a&gt;, 16c Xeon, monthly list&lt;/td&gt;
&lt;td&gt;6226R (2020), $335&lt;/td&gt;
&lt;td&gt;6526Y (2023), $564&lt;/td&gt;
&lt;td&gt;1.68x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://hostingsift.com/hosting/ultahost" rel="noopener noreferrer"&gt;Ultahost&lt;/a&gt;, 24c EPYC, 3-year term&lt;/td&gt;
&lt;td&gt;7401P (2017), $239.74&lt;/td&gt;
&lt;td&gt;9224 (2022), $341.88&lt;/td&gt;
&lt;td&gt;1.43x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://hostingsift.com/hosting/pebblehost" rel="noopener noreferrer"&gt;PebbleHost&lt;/a&gt;, 12c Ryzen 9, monthly&lt;/td&gt;
&lt;td&gt;7900 (2023), $99.99&lt;/td&gt;
&lt;td&gt;9900X (2024), $139.99&lt;/td&gt;
&lt;td&gt;1.40x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://hostingsift.com/hosting/ovhcloud" rel="noopener noreferrer"&gt;OVHcloud&lt;/a&gt;, 24c EPYC, 2-year term&lt;/td&gt;
&lt;td&gt;7451 (2017), €58.89&lt;/td&gt;
&lt;td&gt;7413 (2021), €170.99&lt;/td&gt;
&lt;td&gt;2.90x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;InterServer's ladder is the cleanest because all three rungs are plain monthly prices at one provider: EPYC 7402P from 2019 at $399, 7443P from 2021 at $450, 9254 from 2022 at $720. Twenty-four cores each time. The bill goes up 80% while the core count stays put.&lt;/p&gt;

&lt;p&gt;Liquid Web deserves a footnote, and it is the kind of footnote that should make you distrust round numbers in other people's tables. Our database records $167.50 a month for the 16-core Xeon 6226R, which would make the jump to the 6526Y look like a 2.9x increase. It is not. The $167.50 is Liquid Web's "50% off first 2 months" intro rate and it renews at $335, while the 6526Y figure we store is a two-year committed rate whose monthly equivalent is $564. Matched term against matched term, both the monthly pair and the two-year pair give the same answer: &lt;strong&gt;1.68x&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Two counter-examples keep this honest. Vultr sells the Xeon E-2288G (2019) and E-2388G (2021) as 8-core, 128 GB bare metal boxes at &lt;strong&gt;exactly $350 each&lt;/strong&gt;. Two years of silicon, zero price difference. And OVHcloud's €85.49 price point buys either a 16-core EPYC 7371 from 2019, an 8-core Ryzen 7 5800X from 2020, or a 6-core EPYC 4244P from 2024. Same money, $6.14 versus $12.29 versus $16.39 per core, a 2.67x spread inside one price point at one provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cheapest dedicated server per core, and the other end
&lt;/h2&gt;

&lt;p&gt;Across the 106 orderable, vendor-identified plans the spread is &lt;strong&gt;17.4x&lt;/strong&gt;, from $2.82 to $49.17 per core per month. Drop Vultr's bare metal line, which is its own pricing universe, and it is still 11.2x.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Host&lt;/th&gt;
&lt;th&gt;CPU&lt;/th&gt;
&lt;th&gt;Cores&lt;/th&gt;
&lt;th&gt;Price/mo&lt;/th&gt;
&lt;th&gt;$/core&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;KS-7&lt;/td&gt;
&lt;td&gt;OVHcloud&lt;/td&gt;
&lt;td&gt;EPYC 7451 (2017)&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;€58.89 / $67.72&lt;/td&gt;
&lt;td&gt;$2.82&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KS-4&lt;/td&gt;
&lt;td&gt;OVHcloud&lt;/td&gt;
&lt;td&gt;Xeon E3-1230 v6 (2017)&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;€16.14 / $18.56&lt;/td&gt;
&lt;td&gt;$4.64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EX44&lt;/td&gt;
&lt;td&gt;Hetzner&lt;/td&gt;
&lt;td&gt;Core i5-13500 (2023)&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;€59.00 / $67.85&lt;/td&gt;
&lt;td&gt;$4.85&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 x Xeon Platinum 8173M&lt;/td&gt;
&lt;td&gt;InterServer&lt;/td&gt;
&lt;td&gt;Platinum 8173M (2017)&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;$279.00&lt;/td&gt;
&lt;td&gt;$4.98&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dual Xeon Gold 5218&lt;/td&gt;
&lt;td&gt;Namecheap&lt;/td&gt;
&lt;td&gt;Gold 5218 (2019)&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;$160.64&lt;/td&gt;
&lt;td&gt;$5.02&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dual EPYC 7313&lt;/td&gt;
&lt;td&gt;Namecheap&lt;/td&gt;
&lt;td&gt;EPYC 7313 (2021)&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;$170.24&lt;/td&gt;
&lt;td&gt;$5.32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RISE-XL&lt;/td&gt;
&lt;td&gt;OVHcloud&lt;/td&gt;
&lt;td&gt;EPYC Turin 9455 (2024)&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;€284.99 / $327.74&lt;/td&gt;
&lt;td&gt;$6.83&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last row is the one worth staring at. RISE-XL is a 48-core Turin part, current generation, at $6.83 per core. Hetzner's AX162, a 48-core Genoa from 2022, is $14.71 per core. Both are single-socket European boxes with DDR5 ECC. The 2.2x between them comes from two companies picking different margins, one on a two-year signature and one on a month-to-month box.&lt;/p&gt;

&lt;p&gt;At the expensive end the story is entirely about who is selling, not what:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Host&lt;/th&gt;
&lt;th&gt;CPU&lt;/th&gt;
&lt;th&gt;Cores&lt;/th&gt;
&lt;th&gt;Price/mo&lt;/th&gt;
&lt;th&gt;$/core&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bare Metal EPYC 4245P&lt;/td&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;EPYC 4245P (2025)&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;$295.00&lt;/td&gt;
&lt;td&gt;$49.17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bare Metal EPYC 4345P&lt;/td&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;EPYC 4345P (2025)&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;$365.00&lt;/td&gt;
&lt;td&gt;$45.63&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bare Metal Intel E-2288G&lt;/td&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;Xeon E-2288G (2019)&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;$350.00&lt;/td&gt;
&lt;td&gt;$43.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SX295&lt;/td&gt;
&lt;td&gt;Hetzner&lt;/td&gt;
&lt;td&gt;EPYC 7502P (2019)&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;€879 / $1010.85&lt;/td&gt;
&lt;td&gt;$31.59&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Essential / Advanced / Elite&lt;/td&gt;
&lt;td&gt;InMotion&lt;/td&gt;
&lt;td&gt;Xeon E-2134 / E-2176G / E-2388G&lt;/td&gt;
&lt;td&gt;4 / 6 / 8&lt;/td&gt;
&lt;td&gt;$119.99 / $179.99 / $239.99&lt;/td&gt;
&lt;td&gt;$30.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;InMotion's three managed tiers land on &lt;strong&gt;exactly $30.00 per core&lt;/strong&gt;, which is not a coincidence, it is a price list built on a per-core rate card. Hetzner's SX295 is a storage server: 256 GB of RAM, two NVMe drives and fourteen 22 TB hard disks, so its CPU-normalised number badly overstates what you are paying for compute. Vultr's bare metal sits three to ten times above the same chip elsewhere because you are renting hourly billing and an API, not a server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Price per core by host
&lt;/h2&gt;

&lt;p&gt;Median across every orderable, vendor-identified plan each host sells.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Host&lt;/th&gt;
&lt;th&gt;Plans&lt;/th&gt;
&lt;th&gt;Median $/core/mo&lt;/th&gt;
&lt;th&gt;Billing basis in our data&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/servarica" rel="noopener noreferrer"&gt;Servarica&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;$5.60&lt;/td&gt;
&lt;td&gt;monthly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/ovhcloud" rel="noopener noreferrer"&gt;OVHcloud&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;$9.10&lt;/td&gt;
&lt;td&gt;24-month term&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/namecheap" rel="noopener noreferrer"&gt;Namecheap&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;$9.21&lt;/td&gt;
&lt;td&gt;monthly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/pebblehost" rel="noopener noreferrer"&gt;PebbleHost&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;$9.37&lt;/td&gt;
&lt;td&gt;monthly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;$10.91&lt;/td&gt;
&lt;td&gt;12-month term&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/liquidweb" rel="noopener noreferrer"&gt;Liquid Web&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;$14.35&lt;/td&gt;
&lt;td&gt;mixed, see note&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;$14.71&lt;/td&gt;
&lt;td&gt;monthly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/interserver" rel="noopener noreferrer"&gt;InterServer&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;$15.81&lt;/td&gt;
&lt;td&gt;monthly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/ultahost" rel="noopener noreferrer"&gt;Ultahost&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;$17.07&lt;/td&gt;
&lt;td&gt;36-month term&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/extravm" rel="noopener noreferrer"&gt;ExtraVM&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;$24.92&lt;/td&gt;
&lt;td&gt;monthly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/inmotion-hosting" rel="noopener noreferrer"&gt;InMotion&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;$30.00&lt;/td&gt;
&lt;td&gt;12-month term, managed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/vultr" rel="noopener noreferrer"&gt;Vultr&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;$42.61&lt;/td&gt;
&lt;td&gt;monthly, hourly available&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The billing column is not decoration. OVHcloud's $9.10 assumes you sign for 24 months; Ultahost's $17.07 assumes 36. Servarica's single row is a plan advertised as “20 to 24 cores” and we counted 20, the conservative end, which is why one plan gets to sit at the top. Contabo's figure is its 12-month rate, and at the plain monthly price its median moves from $10.91 to roughly $12.46. Compare hosts across this table and you are comparing commitments as much as hardware. Our &lt;a href="https://hostingsift.com/category/dedicated-hosting" rel="noopener noreferrer"&gt;dedicated hosting category page&lt;/a&gt; has the full plan-level detail for each of these.&lt;/p&gt;

&lt;p&gt;Management is priced separately and, at least at HostPapa, it is a flat fee rather than a percentage. Unmanaged Spark $59.95 becomes Managed Spark $109.95. Pulse $99.95 becomes $149.95. Drive, Ignite and Surge all do the same thing: &lt;strong&gt;exactly $50.00 a month&lt;/strong&gt;, from the smallest box to the $524.95 one. HostPapa does not publish CPU models, so those plans sit outside the vendor index, but the pattern is worth knowing before you assume managed hosting scales with server size.&lt;/p&gt;

&lt;h2&gt;
  
  
  On the cloud side the brand is nearly free
&lt;/h2&gt;

&lt;p&gt;Bare metal is where vendor choice costs money. On virtual machines it mostly does not.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hostingsift.com/hosting/digitalocean" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt; sells its Basic Premium droplets in an Intel version and an AMD version at nine matched shapes. Intel costs exactly 8/7 of AMD on every single one, a &lt;strong&gt;14.29% premium&lt;/strong&gt; that never varies:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shape&lt;/th&gt;
&lt;th&gt;Premium AMD&lt;/th&gt;
&lt;th&gt;Premium Intel&lt;/th&gt;
&lt;th&gt;AMD NVMe&lt;/th&gt;
&lt;th&gt;Intel NVMe&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 vCPU / 1 GiB&lt;/td&gt;
&lt;td&gt;$7&lt;/td&gt;
&lt;td&gt;$8&lt;/td&gt;
&lt;td&gt;25 GiB&lt;/td&gt;
&lt;td&gt;35 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 vCPU / 4 GiB&lt;/td&gt;
&lt;td&gt;$28&lt;/td&gt;
&lt;td&gt;$32&lt;/td&gt;
&lt;td&gt;80 GiB&lt;/td&gt;
&lt;td&gt;120 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 vCPU / 16 GiB&lt;/td&gt;
&lt;td&gt;$84&lt;/td&gt;
&lt;td&gt;$96&lt;/td&gt;
&lt;td&gt;200 GiB&lt;/td&gt;
&lt;td&gt;320 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8 vCPU / 32 GiB&lt;/td&gt;
&lt;td&gt;$168&lt;/td&gt;
&lt;td&gt;$192&lt;/td&gt;
&lt;td&gt;400 GiB&lt;/td&gt;
&lt;td&gt;640 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The Intel droplet ships 1.4x to 1.6x the NVMe at every size. The surcharge buys disk, and the CPU brand comes along for the ride.&lt;/p&gt;

&lt;p&gt;Vultr goes further. Its High Performance line is sold in both flavours, and the vendor is exposed in the public plans API as a &lt;code&gt;cpu_vendor&lt;/code&gt; field, so this is checkable in one curl. All eight shapes, from 1 vCPU / 1 GiB at $6 up to 12 vCPU / 24 GiB at $144, are &lt;strong&gt;identical in price, RAM, NVMe and bandwidth&lt;/strong&gt; between the AMD and Intel versions. Not close. The same number. Vultr's High Frequency line, also Intel, matches those prices at the four overlapping shapes and adds 25% to 33% more NVMe, while halving the transfer allowance from 2 TB to 1 TB.&lt;/p&gt;

&lt;p&gt;If you have been choosing cloud instances by CPU vendor and expecting a discount, there is no discount to find at Vultr and a 14.29% disk-shaped one at DigitalOcean. We went through the related question of dedicated versus shared vCPU pricing in &lt;a href="https://hostingsift.com/blog/dedicated-vs-shared-vcpu-price-premium-2026" rel="noopener noreferrer"&gt;a separate piece&lt;/a&gt;, and the per-gigabyte-of-RAM view in &lt;a href="https://hostingsift.com/blog/vps-price-per-gb-ram-2026" rel="noopener noreferrer"&gt;this one&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dedicated prices barely move
&lt;/h2&gt;

&lt;p&gt;We snapshot every plan nightly, which means we can say how long these numbers have actually held rather than just quoting today's page.&lt;/p&gt;

&lt;p&gt;Of the 167 orderable dedicated plans, &lt;strong&gt;123 (73.7%)&lt;/strong&gt; have shown exactly one price across our entire series. Not one change. Some specifics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OVHcloud: 31 of 31 plans unchanged across 148 days of readings&lt;/strong&gt;, from 1 April 2026 to today. The entire Eco, Rise and Advance catalogue, frozen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PebbleHost: 8 of 8 unchanged across 159 days of readings&lt;/strong&gt;, since 17 March 2026.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vultr bare metal: 10 of 10 unchanged&lt;/strong&gt;, eight of them from 22 February 2026, where our series begins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Namecheap is the exception.&lt;/strong&gt; Only 5 of its 12 plans have held one price, and the Dual Xeon Gold 5218 has carried five different prices over 179 days of readings. If you are quoting Namecheap dedicated pricing, date your quote.&lt;/li&gt;
&lt;li&gt;IONOS changed all 10 of its dedicated plans at least once, Contabo all 4, InMotion all 5.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the per-core table above is not a one-day photograph for most of this market. For three quarters of it, the plan has never once shown us a different number since we started reading it. You can watch the ones that do move on our &lt;a href="https://hostingsift.com/trends" rel="noopener noreferrer"&gt;price trends page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this table could mislead you
&lt;/h2&gt;

&lt;p&gt;Corrections we would want applied to somebody else's price-per-core article, applied to ours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The price basis is not uniform.&lt;/strong&gt; We use the lowest advertised monthly-equivalent each host shows, and hosts advertise on different commitments: OVHcloud on 24 months, Contabo on 12, Ultahost and Bluehost on 36, Hetzner and Namecheap and InterServer and Vultr and PebbleHost on plain monthly. Comparing OVHcloud's $9.10 to Hetzner's $14.71 compares a two-year signature to a month-to-month one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intro rates hide inside monthly prices.&lt;/strong&gt; Liquid Web's $167.50 is half price for two months. We caught it because the same record carries a $335 renewal figure. Where a host does not publish a renewal price, we cannot catch it at all, which is a problem we wrote about in &lt;a href="https://hostingsift.com/blog/which-hosts-publish-renewal-prices-2026" rel="noopener noreferrer"&gt;our study of which hosts publish renewal pricing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A core is not a core.&lt;/strong&gt; Hybrid Intel desktop parts inflate the count against server Xeons and EPYCs. Dual-socket 2017 Xeons give you 56 cheap cores with 2017 per-core performance and 2017 memory bandwidth. An EPYC Turin core and a Xeon E5 core from 2013 are the same row in this table and nothing alike in a benchmark. Price per core is a purchasing metric, not a performance one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Out-of-stock plans are excluded, and some of them are the cheap ones.&lt;/strong&gt; OVHcloud's KS-B at €9.49 would be $2.73 per core and would top the cheapest list, but you cannot order it, so it is not in the ranking. Seventeen OVHcloud plans are in that state right now, along with all seven of Private Hosting's and fourteen of Servarica's fifteen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two data points we are deliberately not making claims about.&lt;/strong&gt; Hetzner's dedicated price history before 11 September 2026 is unusable in our series: our scraper alternated between the price of the currently available configuration and the base catalogue price on the same plan on the same night, so AX162 shows both €319 and €614 in overlapping runs. The current values are catalogue prices and we verified all thirteen of them against hetzner.com rather than trusting the series. And Ultahost's ULTA-X11 is advertised as "64-Core AMD EPYC 9454" although that part has 48 cores; we used their number and flag it here.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would actually buy
&lt;/h2&gt;

&lt;p&gt;Four workloads, four picks, with the number that decides each one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cheapest usable cores, throughput work, you do not care about per-core speed.&lt;/strong&gt; OVHcloud KS-7: EPYC 7451, 24 cores, €58.89 on a two-year term, &lt;strong&gt;$2.82 per core&lt;/strong&gt;. Nothing else in the sample is within 60% of it. Naples cores from 2017 are slow and the memory subsystem shows its age, so this is a build farm or a batch queue, not a database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cheap cores that are actually fast.&lt;/strong&gt; Hetzner EX44 at €59, no setup fee, $4.85 per core. Six Raptor Lake performance cores clock higher than anything on the budget lists and the eight efficiency cores are free parallelism. Verified live on hetzner.com on 21 September 2026.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Many cores for a database.&lt;/strong&gt; Namecheap's Dual Xeon Gold 5218 at $160.64 gives 32 cores and 128 GB for $5.02 a core. If you want newer silicon for the same job, the Dual EPYC 7313 at $170.24 is $9.60 more per month. That $9.60 is the entire "AMD premium" at this size, and it buys you Milan instead of Cascade Lake. Take it. Then date your quote, because Namecheap is the one host here that moves its dedicated prices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current generation, single socket, production.&lt;/strong&gt; OVHcloud RISE-XL: 48 Turin cores at $6.83 each. Hetzner's AX162 is 2.2x the per-core price for 2022 Genoa, and the reasons to pay it are the monthly term and the network, not the chip.&lt;/p&gt;

&lt;p&gt;The pattern under all four: in September 2026, on 106 servers we can price by the core, the launch year of the processor moves the number far more than the logo printed on it. Anyone selling you an AMD-versus-Intel decision without telling you the model year is selling you the wrong variable.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://hostingsift.com/blog/amd-vs-intel-dedicated-server-price-per-core-2026" rel="noopener noreferrer"&gt;hostingsift.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hardware</category>
      <category>devops</category>
      <category>cloud</category>
      <category>hosting</category>
    </item>
    <item>
      <title>Dedicated vs Shared vCPU: What the Premium Actually Costs in 2026</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Sun, 13 Sep 2026 08:10:48 +0000</pubDate>
      <link>https://dev.to/hostingsift/dedicated-vs-shared-vcpu-what-the-premium-actually-costs-in-2026-5cge</link>
      <guid>https://dev.to/hostingsift/dedicated-vs-shared-vcpu-what-the-premium-actually-costs-in-2026-5cge</guid>
      <description>&lt;p&gt;On Vultr, a dedicated vCPU costs 2.8 times as much as a shared one. Also on Vultr, it costs 12.5% more. Both figures come off the same price list on 13 September 2026: $10 against $28 for a server with 1 vCPU and 2 GB of RAM, and $640 against $720 for one with 24 vCPUs and 96 GB.&lt;/p&gt;

&lt;p&gt;Providers sell "dedicated CPU" as one upgrade with one meaning. The price attached to it swings by a factor of 2.5 depending on who you buy from and how big you go. We took every shared and dedicated plan that has the exact same vCPU count and RAM at the same provider and found 18 matching pairs across four hosts. The premium ranged from 1.13x to 2.80x. At Vultr it shrinks as the server grows, while DigitalOcean and Linode lock it to a fixed multiple. And at Linode, once you need eight cores or more, the dedicated line is the cheaper way to buy them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a shared vCPU actually gives you
&lt;/h2&gt;

&lt;p&gt;A shared vCPU is a slice of a hardware thread that other customers can be scheduled on too. DigitalOcean's documentation says so plainly: on a Basic Droplet, "the hyper-thread allocated to the Droplet may be shared between multiple other Droplets," and when those neighbours are busy, "a Droplet could receive fractions of hyper-threads instead of dedicated access to the underlying physical processors." Dedicated CPU Droplets "have guaranteed access to the full hyper-thread at all times" (&lt;a href="https://docs.digitalocean.com/products/droplets/concepts/choosing-a-plan/" rel="noopener noreferrer"&gt;DigitalOcean docs&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Akamai, which runs Linode, puts a number on it. Shared CPU cores "can be used at 100% for short bursts, but should remain below 80% sustained usage on average" (&lt;a href="https://techdocs.akamai.com/cloud-computing/docs/shared-cpu-compute-instances" rel="noopener noreferrer"&gt;Akamai shared CPU docs&lt;/a&gt;). Dedicated instances are pitched for "sustained full-duty workloads (100% CPU all day, every day)" (&lt;a href="https://techdocs.akamai.com/cloud-computing/docs/dedicated-cpu-compute-instances" rel="noopener noreferrer"&gt;Akamai dedicated CPU docs&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;That 80% line is the most useful sentence any host has published on the subject. A shared vCPU is a core you may spike but should not pin.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to see contention from inside the server
&lt;/h3&gt;

&lt;p&gt;Time the hypervisor hands to someone else shows up as steal. In &lt;code&gt;top&lt;/code&gt; it is the &lt;code&gt;st&lt;/code&gt; field, which the man page defines as "time stolen from this vm by the hypervisor" (&lt;a href="https://man7.org/linux/man-pages/man1/top.1.html" rel="noopener noreferrer"&gt;top(1)&lt;/a&gt;). &lt;code&gt;vmstat&lt;/code&gt; reports the same figure in its own &lt;code&gt;st&lt;/code&gt; column.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vmstat 1 30
&lt;span class="c"&gt;# read the "st" column while your app is under load&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A value that stays near zero while your service is busy means the neighbours are quiet. A value that climbs at the same moment your response times do means you are paying for their workloads in latency, and that is the evidence worth acting on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Burst credits are shared CPU with a written limit
&lt;/h3&gt;

&lt;p&gt;Some providers replace the vague fair-share arrangement with a meter. AWS burstable instances earn CPU credits below a baseline and spend them above it. A t3.micro's baseline is 10% per vCPU, and in Standard mode an instance that runs out of credits "gradually comes down to baseline CPU utilization and cannot burst above baseline until it accrues more credits." In Unlimited mode it keeps going and bills the surplus (&lt;a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html" rel="noopener noreferrer"&gt;AWS docs&lt;/a&gt;). Kamatera's Type T uses the same idea in plain dollars: "Exceeding an average CPU usage of 10% will be extra charged" (&lt;a href="https://www.kamatera.com/faq/answer/which-cpu-types-are-offered-by-kamatera/" rel="noopener noreferrer"&gt;Kamatera FAQ&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The advantage of a meter is that you can read the ceiling before you hit it. With an ordinary shared vCPU you find the ceiling by hitting it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we matched the plans
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Prices are from our nightly catalog read of 13 September 2026. The same day we checked Linode against Akamai's pricing page and public API, Vultr against its public plans API, DigitalOcean against its Droplet pricing page, and Hetzner, Contabo and Kamatera against their own pages.&lt;/li&gt;
&lt;li&gt;The class comes from the product line, because a plan's CPU label almost never says "shared". &lt;a href="https://hostingsift.com/hosting/digitalocean" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt; Basic Droplets count as shared; General Purpose and CPU-Optimized as dedicated. &lt;a href="https://hostingsift.com/hosting/linode" rel="noopener noreferrer"&gt;Linode&lt;/a&gt; Shared CPU against Dedicated CPU. &lt;a href="https://hostingsift.com/hosting/vultr" rel="noopener noreferrer"&gt;Vultr&lt;/a&gt; Cloud Compute against Optimized Cloud Compute, which Vultr's docs call "dedicated virtual machines" (&lt;a href="https://docs.vultr.com/products/compute/optimized-cloud-compute/provisioning" rel="noopener noreferrer"&gt;Vultr docs&lt;/a&gt;). &lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt; Cloud VPS against Cloud VDS.&lt;/li&gt;
&lt;li&gt;A pair means the same provider, the same number of vCPUs and the same RAM. Where several plans in one class fit a shape, the cheapest counts.&lt;/li&gt;
&lt;li&gt;Monthly list prices in the currency the host bills. Contabo's figures are its 24-month-term rates. Both Contabo lines use the same term discounts, so the ratio is identical on a monthly contract (€25.00 against €69.00 for the 12-core pair).&lt;/li&gt;
&lt;li&gt;Not in the pair table: &lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt; and &lt;a href="https://hostingsift.com/hosting/kamatera" rel="noopener noreferrer"&gt;Kamatera&lt;/a&gt;, which have no matching shapes and get their own section below. Fly.io is out too, because its shared machines start at 256 MB per vCPU and its performance machines at 2 GB, so nothing lines up. So is DigitalOcean App Platform, a PaaS rather than a server.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The premium, pair by pair
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;vCPU / RAM&lt;/th&gt;
&lt;th&gt;Shared plan&lt;/th&gt;
&lt;th&gt;Dedicated plan&lt;/th&gt;
&lt;th&gt;Premium&lt;/th&gt;
&lt;th&gt;Disk (shared / dedicated)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DigitalOcean&lt;/td&gt;
&lt;td&gt;2 / 4 GB&lt;/td&gt;
&lt;td&gt;Basic Regular, $24&lt;/td&gt;
&lt;td&gt;CPU-Optimized, $42&lt;/td&gt;
&lt;td&gt;1.75x&lt;/td&gt;
&lt;td&gt;80 / 25 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DigitalOcean&lt;/td&gt;
&lt;td&gt;2 / 8 GB&lt;/td&gt;
&lt;td&gt;Basic Premium AMD, $42&lt;/td&gt;
&lt;td&gt;General Purpose, $63&lt;/td&gt;
&lt;td&gt;1.50x&lt;/td&gt;
&lt;td&gt;100 / 25 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DigitalOcean&lt;/td&gt;
&lt;td&gt;4 / 8 GB&lt;/td&gt;
&lt;td&gt;Basic Regular, $48&lt;/td&gt;
&lt;td&gt;CPU-Optimized, $84&lt;/td&gt;
&lt;td&gt;1.75x&lt;/td&gt;
&lt;td&gt;160 / 50 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DigitalOcean&lt;/td&gt;
&lt;td&gt;4 / 16 GB&lt;/td&gt;
&lt;td&gt;Basic Premium AMD, $84&lt;/td&gt;
&lt;td&gt;General Purpose, $126&lt;/td&gt;
&lt;td&gt;1.50x&lt;/td&gt;
&lt;td&gt;200 / 50 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DigitalOcean&lt;/td&gt;
&lt;td&gt;8 / 16 GB&lt;/td&gt;
&lt;td&gt;Basic Regular, $96&lt;/td&gt;
&lt;td&gt;CPU-Optimized, $168&lt;/td&gt;
&lt;td&gt;1.75x&lt;/td&gt;
&lt;td&gt;320 / 100 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DigitalOcean&lt;/td&gt;
&lt;td&gt;8 / 32 GB&lt;/td&gt;
&lt;td&gt;Basic Premium AMD, $168&lt;/td&gt;
&lt;td&gt;General Purpose, $252&lt;/td&gt;
&lt;td&gt;1.50x&lt;/td&gt;
&lt;td&gt;400 / 100 GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linode&lt;/td&gt;
&lt;td&gt;2 / 4 GB&lt;/td&gt;
&lt;td&gt;Linode 4GB, $24&lt;/td&gt;
&lt;td&gt;Dedicated 4GB, $36&lt;/td&gt;
&lt;td&gt;1.50x&lt;/td&gt;
&lt;td&gt;80 / 80 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linode&lt;/td&gt;
&lt;td&gt;4 / 8 GB&lt;/td&gt;
&lt;td&gt;Linode 8GB, $48&lt;/td&gt;
&lt;td&gt;Dedicated 8GB, $72&lt;/td&gt;
&lt;td&gt;1.50x&lt;/td&gt;
&lt;td&gt;160 / 160 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;1 / 2 GB&lt;/td&gt;
&lt;td&gt;CC Regular, $10&lt;/td&gt;
&lt;td&gt;Optimized CPU, $28&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.80x&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;55 / 25 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;2 / 4 GB&lt;/td&gt;
&lt;td&gt;CC Regular, $20&lt;/td&gt;
&lt;td&gt;Optimized CPU, $40&lt;/td&gt;
&lt;td&gt;2.00x&lt;/td&gt;
&lt;td&gt;80 / 50 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;4 / 8 GB&lt;/td&gt;
&lt;td&gt;CC Regular, $40&lt;/td&gt;
&lt;td&gt;Optimized CPU, $80&lt;/td&gt;
&lt;td&gt;2.00x&lt;/td&gt;
&lt;td&gt;160 / 75 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;4 / 16 GB&lt;/td&gt;
&lt;td&gt;CC High Frequency, $96&lt;/td&gt;
&lt;td&gt;Optimized General Purpose, $120&lt;/td&gt;
&lt;td&gt;1.25x&lt;/td&gt;
&lt;td&gt;384 / 80 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;8 / 16 GB&lt;/td&gt;
&lt;td&gt;CC High Performance, $96&lt;/td&gt;
&lt;td&gt;Optimized CPU, $160&lt;/td&gt;
&lt;td&gt;1.67x&lt;/td&gt;
&lt;td&gt;350 / 150 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;8 / 32 GB&lt;/td&gt;
&lt;td&gt;CC Regular, $160&lt;/td&gt;
&lt;td&gt;Optimized General Purpose, $240&lt;/td&gt;
&lt;td&gt;1.50x&lt;/td&gt;
&lt;td&gt;640 / 160 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;16 / 64 GB&lt;/td&gt;
&lt;td&gt;CC Regular, $320&lt;/td&gt;
&lt;td&gt;Optimized General Purpose, $480&lt;/td&gt;
&lt;td&gt;1.50x&lt;/td&gt;
&lt;td&gt;1,280 / 320 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;24 / 96 GB&lt;/td&gt;
&lt;td&gt;CC Regular, $640&lt;/td&gt;
&lt;td&gt;Optimized General Purpose, $720&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.13x&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1,600 / 480 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contabo&lt;/td&gt;
&lt;td&gt;12 / 48 GB&lt;/td&gt;
&lt;td&gt;Cloud VPS 12, €20.00&lt;/td&gt;
&lt;td&gt;Cloud VDS L, €55.20&lt;/td&gt;
&lt;td&gt;2.76x&lt;/td&gt;
&lt;td&gt;400 / 360 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contabo&lt;/td&gt;
&lt;td&gt;16 / 64 GB&lt;/td&gt;
&lt;td&gt;Cloud VPS 16, €29.60&lt;/td&gt;
&lt;td&gt;Cloud VDS XL, €75.20&lt;/td&gt;
&lt;td&gt;2.54x&lt;/td&gt;
&lt;td&gt;500 / 480 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Seven of the 18 pairs land on exactly 1.50x. The outliers sit at the two ends of Vultr's range and at Contabo.&lt;/p&gt;

&lt;p&gt;Contabo's ratio is high because its shared side is so cheap. Its basic Cloud VPS plans cost €1.00 to €2.18 per vCPU per month on a 24-month term, far below anything else in this set (see its &lt;a href="https://hostingsift.com/trends/contabo" rel="noopener noreferrer"&gt;price history&lt;/a&gt;). The Cloud VDS line, according to Contabo, gives you "dedicated CPU and RAM inside a virtualized environment" with resources "committed to your instance alone, not pooled across tenants like a shared VPS." The same page concedes that a VDS "is also hosted on a shared physical server" (&lt;a href="https://contabo.com/en/vds/" rel="noopener noreferrer"&gt;Contabo VDS&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Small servers pay the steepest markup
&lt;/h2&gt;

&lt;p&gt;Vultr shows the size effect most clearly. Its smallest dedicated plan, Optimized CPU with 1 vCPU and 2 GB, costs $28. The shared plan of the same shape costs $10. For $20 you could have the shared 2 vCPU, 4 GB plan instead, which is twice the cores and twice the memory for $8 a month less than the single dedicated core.&lt;/p&gt;

&lt;p&gt;Further up, the markup falls away. Against the Regular plans it goes from 2.80x at 1 vCPU to 2.00x at 2 and 4, then 1.50x at 8 and 16, and finally 1.13x at 24 vCPUs, where dedicated adds $80 to a $640 bill. Dedicated has a price floor at the bottom, and Vultr's shared line gets more expensive per core as it grows: $10 per vCPU on the Regular plans in the table up to 4 cores, $20 at 8 and 16, $26.67 at 24. Optimized General Purpose holds at a flat $30 per vCPU from 1 core to 64.&lt;/p&gt;

&lt;p&gt;DigitalOcean and Linode do something different and keep the ratio fixed. DigitalOcean's CPU-Optimized Droplets cost exactly 1.75x the Basic Regular Droplet of the same shape at every size we could match. General Purpose costs exactly 1.50x Basic Premium AMD. Linode lands on 1.50x because it prices both lines by memory: $6 per GB of RAM on shared plans (the $5 Nanode aside) and $9 per GB on dedicated plans, without a single exception on either list. If you want the per-GB view across the whole market, we ran it in our &lt;a href="https://hostingsift.com/blog/vps-price-per-gb-ram-2026" rel="noopener noreferrer"&gt;VPS price per GB of RAM index&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where dedicated is the cheaper way to buy cores
&lt;/h2&gt;

&lt;p&gt;Linode's per-GB pricing has a side effect worth knowing about. As shared plans grow, they add memory faster than cores: 2 GB per vCPU at the bottom, 4 GB per vCPU at 8 and 16 cores, 6 GB per vCPU at 32. The dedicated line stays at 2 GB per vCPU all the way to 48 cores. Priced per core, the two lines cross between 6 and 8 vCPUs.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;vCPUs&lt;/th&gt;
&lt;th&gt;Cheapest shared plan&lt;/th&gt;
&lt;th&gt;Shared $/vCPU&lt;/th&gt;
&lt;th&gt;Cheapest dedicated plan&lt;/th&gt;
&lt;th&gt;Dedicated $/vCPU&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Linode 4GB (4 GB), $24&lt;/td&gt;
&lt;td&gt;$12.00&lt;/td&gt;
&lt;td&gt;Dedicated 4GB (4 GB), $36&lt;/td&gt;
&lt;td&gt;$18.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Linode 8GB (8 GB), $48&lt;/td&gt;
&lt;td&gt;$12.00&lt;/td&gt;
&lt;td&gt;Dedicated 8GB (8 GB), $72&lt;/td&gt;
&lt;td&gt;$18.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Linode 16GB (16 GB), $96&lt;/td&gt;
&lt;td&gt;$16.00&lt;/td&gt;
&lt;td&gt;No 6-core plan&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Linode 32GB (32 GB), $192&lt;/td&gt;
&lt;td&gt;$24.00&lt;/td&gt;
&lt;td&gt;Dedicated 16GB (16 GB), $144&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$18.00&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Linode 64GB (64 GB), $384&lt;/td&gt;
&lt;td&gt;$24.00&lt;/td&gt;
&lt;td&gt;Dedicated 32GB (32 GB), $288&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$18.00&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Linode 192GB (192 GB), $1,152&lt;/td&gt;
&lt;td&gt;$36.00&lt;/td&gt;
&lt;td&gt;Dedicated 64GB (64 GB), $576&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$18.00&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At 32 vCPUs the dedicated plan costs half as much. You give up 128 GB of RAM to get there, and that is the whole point. If your build farm or encoder is CPU-bound and fits in 64 GB, the shared plan charges you $576 a month for memory you will never touch.&lt;/p&gt;

&lt;p&gt;One caveat from outside our tracked catalog. Akamai's North America pricing page, checked on 13 September 2026, describes both the shared plans and the G6 dedicated plans above as running on legacy hardware, and lists a newer G8 Dedicated line at higher prices: $50.40 for 2 vCPUs and 4 GB, $194.40 for 8 vCPUs and 16 GB (&lt;a href="https://www.akamai.com/cloud/pricing/north-america" rel="noopener noreferrer"&gt;Akamai pricing&lt;/a&gt;). On G8, 8 and 16 cores cost about the same as the shared plans with the same core count. The dedicated line only pulls clearly ahead at 32 vCPUs, $777.60 against $1,152.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dedicated plans usually ship with less disk
&lt;/h2&gt;

&lt;p&gt;The premium column hides a second cost. In 16 of the 18 pairs, the dedicated plan comes with less storage than the shared plan it replaces. Linode is the only one of the four that keeps disk identical across both lines.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DigitalOcean at 2 vCPUs and 4 GB: 80 GiB on Basic, 25 GiB on CPU-Optimized, for $18 more per month.&lt;/li&gt;
&lt;li&gt;Vultr at 4 vCPUs and 16 GB: 384 GB on High Frequency, 80 GB on Optimized General Purpose.&lt;/li&gt;
&lt;li&gt;Vultr at 24 vCPUs and 96 GB: 1,600 GB on Cloud Compute Regular, 480 GB on Optimized.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of that gap is a change of drive type. Vultr's Regular plans and Contabo's Cloud VPS list plain SSD, while their dedicated lines list NVMe. But if you are sizing a database, read the disk column before the CPU label, because extra block storage is a separate monthly charge that no premium ratio includes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hetzner and Kamatera don't fit the grid
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Hetzner makes more sense matched by memory
&lt;/h3&gt;

&lt;p&gt;Hetzner has no shared and dedicated cloud server with the same cores and memory. Its dedicated CCX line gives 4 GB of RAM per vCPU; the shared CPX line gives 2 GB. The cheapest shared lines, CX and the Arm-based CAX, were also not orderable when we read the catalog on 13 September 2026: 8 of Hetzner's 14 shared cloud plans were marked unavailable. (Our &lt;a href="https://hostingsift.com/blog/arm-vps-hosting-2026" rel="noopener noreferrer"&gt;ARM VPS guide&lt;/a&gt; covers what CAX-style Arm servers are good for.) That leaves CPX as the shared line you can actually buy.&lt;/p&gt;

&lt;p&gt;Per vCPU, CPX costs €8.12 to €11.49 a month and CCX costs €16.67 to €21.50, before VAT and the IPv4 address. That reads like a 2x premium. Match the plans by RAM instead and most of it disappears.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;Shared (CPX)&lt;/th&gt;
&lt;th&gt;Dedicated (CCX)&lt;/th&gt;
&lt;th&gt;Premium&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;CPX32, 4 vCPU, €35.49&lt;/td&gt;
&lt;td&gt;CCX13, 2 vCPU, €42.99&lt;/td&gt;
&lt;td&gt;1.21x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;CPX42, 8 vCPU, €69.49&lt;/td&gt;
&lt;td&gt;CCX23, 4 vCPU, €85.99&lt;/td&gt;
&lt;td&gt;1.24x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;CPX62, 16 vCPU, €129.99&lt;/td&gt;
&lt;td&gt;CCX33, 8 vCPU, €138.49&lt;/td&gt;
&lt;td&gt;1.07x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So the real Hetzner question is whether half as many dedicated cores beat twice as many shared ones with the same memory. For a Postgres server with 32 GB, eight dedicated cores for €8.50 more than sixteen shared ones is an easy call.&lt;/p&gt;

&lt;p&gt;The gap also moved this year. Hetzner's repricing of 15 June 2026 took CCX13 from €15.99 to €42.99 and CPX22 from €7.99 to €19.49, for new orders and rescales (&lt;a href="https://northflank.com/blog/hetzner-cloud-server-price-increases" rel="noopener noreferrer"&gt;Northflank's breakdown&lt;/a&gt;). Before it, a dedicated vCPU on those two plans cost exactly twice a shared one, €8.00 against €4.00. Afterwards it is 2.21x. Nothing about the hardware changed that morning, which tells you the premium is a pricing decision, and pricing decisions move. Hetzner's &lt;a href="https://hostingsift.com/trends/hetzner" rel="noopener noreferrer"&gt;price trend page&lt;/a&gt; tracks where it goes next.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kamatera sells four steps, and they are different units
&lt;/h3&gt;

&lt;p&gt;Kamatera's headline gap is the widest we found. A server with 1 vCPU, 1 GB of RAM and 20 GB of NVMe costs $4 a month as Type A and $19 as Type D, which reads as 4.75x. The two types don't sell the same thing, though. From Kamatera's own definitions (&lt;a href="https://www.kamatera.com/faq/answer/which-cpu-types-are-offered-by-kamatera/" rel="noopener noreferrer"&gt;Kamatera FAQ&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Type A (Availability), from $4 a month: "a non-dedicated physical CPU thread with no resources guaranteed."&lt;/li&gt;
&lt;li&gt;Type B (General Purpose), from $9: "a dedicated physical CPU Thread with reserved resources guaranteed."&lt;/li&gt;
&lt;li&gt;Type T (Burstable): a dedicated thread, with usage above a 10% average billed on top.&lt;/li&gt;
&lt;li&gt;Type D (Dedicated), from $19: "a dedicated physical CPU Core (2 threads)."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Type D gives you two threads, which makes it $9.50 per thread, within 50 cents of Type B's $9 starting price. The step that buys a guarantee at Kamatera is A to B, about 2.25x on starting prices. Type D is for workloads that want both threads of a physical core to themselves. Kamatera's &lt;a href="https://hostingsift.com/trends/kamatera" rel="noopener noreferrer"&gt;price history&lt;/a&gt; shows the current list.&lt;/p&gt;

&lt;h2&gt;
  
  
  These prices sit still
&lt;/h2&gt;

&lt;p&gt;Nothing above comes from a flash sale. All 90 active DigitalOcean plans have shown one price each on every one of the 179 nightly readings we have taken since 12 February 2026. Linode's 39 plans have not moved across 169 readings since 24 February. Vultr's Cloud Compute and Optimized lines have held one price per plan since late February. The flat lines are visible on the &lt;a href="https://hostingsift.com/trends/digitalocean" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;, &lt;a href="https://hostingsift.com/trends/linode" rel="noopener noreferrer"&gt;Linode&lt;/a&gt; and &lt;a href="https://hostingsift.com/trends/vultr" rel="noopener noreferrer"&gt;Vultr&lt;/a&gt; trend pages. Hetzner, as covered above, is the exception.&lt;/p&gt;

&lt;p&gt;That stability matters for the decision. On these three clouds the ratio has not budged in more than six months, so the premium is something you can plan a budget around.&lt;/p&gt;

&lt;h2&gt;
  
  
  When dedicated vCPU earns its price
&lt;/h2&gt;

&lt;p&gt;Pay for dedicated when your CPU stays busy for hours at a time. CI runners, video transcoding, game servers and data analysis all appear on Akamai's list of dedicated workloads, and if your average sits above Linode's 80% sustained line, a shared plan is the wrong product at any price.&lt;/p&gt;

&lt;p&gt;Latency-sensitive services are the second case. A database behind a checkout, or an API with a p99 target, suffers from a noisy neighbour long before the monthly CPU graph looks alarming. Watch &lt;code&gt;st&lt;/code&gt; during your busiest hour. If it rises with your response times, the premium is buying you something.&lt;/p&gt;

&lt;p&gt;Skip dedicated for blogs, low-traffic web servers and development environments, which is where DigitalOcean's own guidance places Basic Droplets. Staging boxes and internal tools belong in the same bucket. On small plans with a 2x or larger markup, my advice is to buy the next shared size up. Extra cores give a busy app headroom for less money, and if steal still shows up at that size, you will have the &lt;code&gt;vmstat&lt;/code&gt; numbers to justify the upgrade.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would buy at each size
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WordPress site, staging box or side project:&lt;/strong&gt; Vultr's shared 2 vCPU, 4 GB plan at $20. Hetzner CPX22 at €19.49 if you would rather be billed in euros.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI runner or encoder that needs 8 cores all day:&lt;/strong&gt; Linode Dedicated 16GB at $144. It undercuts Linode's own shared 8-core plan by $48, and beats the nearest dedicated rivals, Vultr Optimized CPU at $160 and DigitalOcean CPU-Optimized at $168. If you are weighing the two US clouds head to head, the &lt;a href="https://hostingsift.com/compare/linode-vs-vultr" rel="noopener noreferrer"&gt;Linode vs Vultr&lt;/a&gt; page has the full catalogs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database with 32 GB of RAM:&lt;/strong&gt; Hetzner CCX33 at €138.49, €8.50 more than the shared CPX62.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A 24 vCPU, 96 GB production box:&lt;/strong&gt; pay Vultr the extra $80 for Optimized General Purpose ($720). At 1.13x it is the smallest markup among the 18 matched pairs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the one purchase I would avoid: a single dedicated core under $30, like Vultr's $28 Optimized CPU plan. Put $20 into two shared vCPUs and 4 GB, run &lt;code&gt;vmstat&lt;/code&gt; under real traffic, and move to dedicated when steal shows up and not before. More plans sit in our &lt;a href="https://hostingsift.com/category/vps-hosting" rel="noopener noreferrer"&gt;VPS hosting&lt;/a&gt; and &lt;a href="https://hostingsift.com/category/cloud-hosting" rel="noopener noreferrer"&gt;cloud hosting&lt;/a&gt; listings.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://hostingsift.com/blog/dedicated-vs-shared-vcpu-price-premium-2026" rel="noopener noreferrer"&gt;hostingsift.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>performance</category>
      <category>hosting</category>
    </item>
    <item>
      <title>Hosting Renewal Prices: Which of 50 Hosts Actually Publish One</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Mon, 07 Sep 2026 19:02:25 +0000</pubDate>
      <link>https://dev.to/hostingsift/hosting-renewal-prices-which-of-50-hosts-actually-publish-one-287n</link>
      <guid>https://dev.to/hostingsift/hosting-renewal-prices-which-of-50-hosts-actually-publish-one-287n</guid>
      <description>&lt;p&gt;Every hosting price page shows you a number. Some of them show you two.&lt;/p&gt;

&lt;p&gt;We scrape 50 providers every night. As of 7 September 2026 our database holds 1,441 active plans that carry both a signup price and a renewal price. Half the providers publish a renewal figure that differs from the signup figure somewhere in their catalog. The other half publish one rate and stop there.&lt;/p&gt;

&lt;p&gt;That split is 25 against 25, and it is a far better predictor of your second-year bill than anything else we can measure.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Group&lt;/th&gt;
&lt;th&gt;Providers&lt;/th&gt;
&lt;th&gt;Active plans&lt;/th&gt;
&lt;th&gt;Plans that renew higher&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Publish a renewal price&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;645&lt;/td&gt;
&lt;td&gt;418 (64.8%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Publish a single price&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;796&lt;/td&gt;
&lt;td&gt;not published, not measurable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Why every percentage here divides by 645
&lt;/h2&gt;

&lt;p&gt;This matters enough to spell out before any other number. A plan that never advertises a renewal rate is not evidence of a plan that holds its price. It is an absence of evidence, and the two are easy to confuse.&lt;/p&gt;

&lt;p&gt;Divide 418 markups by all 1,441 plans and you get 29%, which sounds like good news about the industry. That figure would be meaningless. It counts DigitalOcean's 90 metered plans and Hetzner's 40 flat-rate plans as if we had checked their renewal invoices and found no increase. We have not checked anybody's invoices. We read pricing pages.&lt;/p&gt;

&lt;p&gt;So the denominator throughout is 645: the plans where a second published number exists to compare against. A plan counts as a markup when its published renewal rate sits more than 5% above its signup rate, which keeps rounding and currency conversion out of the count. On that basis, &lt;strong&gt;64.8% of plans renew above their signup rate&lt;/strong&gt;, and the average increase among those is 2.37x.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 25 hosts that publish a renewal price
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Plans&lt;/th&gt;
&lt;th&gt;Renew higher&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;th&gt;Average markup&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/hostinger" rel="noopener noreferrer"&gt;Hostinger&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;2.75x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/godaddy" rel="noopener noreferrer"&gt;GoDaddy&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;1.80x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/hostarmada" rel="noopener noreferrer"&gt;HostArmada&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;2.78x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/bluehost" rel="noopener noreferrer"&gt;Bluehost&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;1.65x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/chemicloud" rel="noopener noreferrer"&gt;ChemiCloud&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;3.21x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/namehero" rel="noopener noreferrer"&gt;NameHero&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;2.75x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/scala-hosting" rel="noopener noreferrer"&gt;Scala Hosting&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;2.18x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/ionos" rel="noopener noreferrer"&gt;IONOS&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;7.15x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/hostgator" rel="noopener noreferrer"&gt;HostGator&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;2.83x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/time4vps" rel="noopener noreferrer"&gt;Time4VPS&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;97.2%&lt;/td&gt;
&lt;td&gt;1.97x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/ultahost" rel="noopener noreferrer"&gt;UltaHost&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;51&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;92.2%&lt;/td&gt;
&lt;td&gt;1.58x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/a2-hosting" rel="noopener noreferrer"&gt;A2 Hosting&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;88.5%&lt;/td&gt;
&lt;td&gt;2.69x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/greengeeks" rel="noopener noreferrer"&gt;GreenGeeks&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;80.0%&lt;/td&gt;
&lt;td&gt;3.48x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/namecom" rel="noopener noreferrer"&gt;Name.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;75.0%&lt;/td&gt;
&lt;td&gt;1.31x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/inmotion-hosting" rel="noopener noreferrer"&gt;InMotion Hosting&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;66.7%&lt;/td&gt;
&lt;td&gt;2.41x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/hostpapa" rel="noopener noreferrer"&gt;HostPapa&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;64.7%&lt;/td&gt;
&lt;td&gt;2.12x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/liquidweb" rel="noopener noreferrer"&gt;Liquid Web&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;61.1%&lt;/td&gt;
&lt;td&gt;1.85x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/hostwinds" rel="noopener noreferrer"&gt;Hostwinds&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;49&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;59.2%&lt;/td&gt;
&lt;td&gt;1.54x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/fastcomet" rel="noopener noreferrer"&gt;FastComet&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;57.9%&lt;/td&gt;
&lt;td&gt;2.58x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/dreamhost" rel="noopener noreferrer"&gt;DreamHost&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;47.8%&lt;/td&gt;
&lt;td&gt;1.63x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/devrims" rel="noopener noreferrer"&gt;Devrims&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;45.7%&lt;/td&gt;
&lt;td&gt;1.43x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/siteground" rel="noopener noreferrer"&gt;SiteGround&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;42.9%&lt;/td&gt;
&lt;td&gt;5.89x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/namecheap" rel="noopener noreferrer"&gt;Namecheap&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;37.9%&lt;/td&gt;
&lt;td&gt;1.84x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/ovhcloud" rel="noopener noreferrer"&gt;OVHcloud&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;97&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;8.2%&lt;/td&gt;
&lt;td&gt;2.83x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/interserver" rel="noopener noreferrer"&gt;InterServer&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;5.9%&lt;/td&gt;
&lt;td&gt;2.80x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The bottom two rows deserve a second look, because a low share here does not mean a gentle host. OVHcloud shows 8 markups out of 97 plans, which reads as tame until you notice all 8 are its shared hosting plans and that is &lt;em&gt;all&lt;/em&gt; of its shared hosting plans. Its 41 cloud instances and 48 dedicated servers carry one number each. InterServer runs the same trick in reverse: its one exception is the Standard shared plan, \$2.50 at signup against a \$7.00 standard rate, sitting in a catalog otherwise built on the price lock it markets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nine hosts raise the price on every plan they sell
&lt;/h2&gt;

&lt;p&gt;Hostinger, GoDaddy, HostArmada, Bluehost, ChemiCloud, NameHero, Scala Hosting, IONOS and HostGator have no exceptions. Across 162 plans between them, in shared hosting, WordPress, VPS, reseller, dedicated and website builders, every single one renews above its signup rate.&lt;/p&gt;

&lt;p&gt;IONOS is the extreme. Its average markup of 7.15x is not a rounding artifact of one weird plan; it has four plans priced at \$1.00 for the first year. The eCommerce Plus builder renews at \$32.00, which is 32x. The Plus website builder goes \$1.00 to \$20.00. The Plus shared plan goes \$1.00 to \$14.00. The Grow WordPress plan goes \$1.00 to \$12.00.&lt;/p&gt;

&lt;p&gt;Nothing here is hidden. IONOS prints both numbers on the page. Whether anyone reads the second one is a different question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the renewal multiple is a bad way to shop
&lt;/h2&gt;

&lt;p&gt;Here is the finding I did not expect. The size of the markup barely predicts what you pay, because the length of the introductory term varies from 12 months to 48 and swamps it.&lt;/p&gt;

&lt;p&gt;Take entry shared plans and run them out to four years, paying the published signup rate for the length of the intro term and the published renewal rate afterwards.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Signup&lt;/th&gt;
&lt;th&gt;Intro term&lt;/th&gt;
&lt;th&gt;Renewal&lt;/th&gt;
&lt;th&gt;Markup&lt;/th&gt;
&lt;th&gt;Four-year total&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A2 Hosting Starter&lt;/td&gt;
&lt;td&gt;\$1.99/mo&lt;/td&gt;
&lt;td&gt;48 months&lt;/td&gt;
&lt;td&gt;\$9.99/mo&lt;/td&gt;
&lt;td&gt;5.02x&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;\$95.52&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hostinger Premium&lt;/td&gt;
&lt;td&gt;\$2.99/mo&lt;/td&gt;
&lt;td&gt;48 months&lt;/td&gt;
&lt;td&gt;\$10.99/mo&lt;/td&gt;
&lt;td&gt;3.68x&lt;/td&gt;
&lt;td&gt;\$143.52&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HostArmada Start Dock&lt;/td&gt;
&lt;td&gt;\$1.99/mo&lt;/td&gt;
&lt;td&gt;36 months&lt;/td&gt;
&lt;td&gt;\$9.95/mo&lt;/td&gt;
&lt;td&gt;5.00x&lt;/td&gt;
&lt;td&gt;\$191.04&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ChemiCloud Starter&lt;/td&gt;
&lt;td&gt;\$1.95/mo&lt;/td&gt;
&lt;td&gt;36 months&lt;/td&gt;
&lt;td&gt;\$11.95/mo&lt;/td&gt;
&lt;td&gt;6.13x&lt;/td&gt;
&lt;td&gt;\$213.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bluehost Starter&lt;/td&gt;
&lt;td&gt;\$3.99/mo&lt;/td&gt;
&lt;td&gt;36 months&lt;/td&gt;
&lt;td&gt;\$9.99/mo&lt;/td&gt;
&lt;td&gt;2.50x&lt;/td&gt;
&lt;td&gt;\$263.52&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FastComet Starter&lt;/td&gt;
&lt;td&gt;\$1.99/mo&lt;/td&gt;
&lt;td&gt;12 months&lt;/td&gt;
&lt;td&gt;\$9.95/mo&lt;/td&gt;
&lt;td&gt;5.00x&lt;/td&gt;
&lt;td&gt;\$382.08&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IONOS Plus&lt;/td&gt;
&lt;td&gt;\$1.00/mo&lt;/td&gt;
&lt;td&gt;12 months&lt;/td&gt;
&lt;td&gt;\$14.00/mo&lt;/td&gt;
&lt;td&gt;14.00x&lt;/td&gt;
&lt;td&gt;\$516.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GreenGeeks Lite&lt;/td&gt;
&lt;td&gt;\$2.95/mo&lt;/td&gt;
&lt;td&gt;12 months&lt;/td&gt;
&lt;td&gt;\$13.95/mo&lt;/td&gt;
&lt;td&gt;4.73x&lt;/td&gt;
&lt;td&gt;\$537.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteGround StartUp&lt;/td&gt;
&lt;td&gt;\$2.99/mo&lt;/td&gt;
&lt;td&gt;12 months&lt;/td&gt;
&lt;td&gt;\$17.99/mo&lt;/td&gt;
&lt;td&gt;6.02x&lt;/td&gt;
&lt;td&gt;\$683.52&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A2 Hosting's Starter plan carries one of the steeper markups in the whole dataset, 5.02x, and produces the cheapest four-year bill of any renewal-publishing shared plan we track. SiteGround's StartUp carries a similar 6.02x and costs seven times more over the same four years. The difference is entirely the term: A2 sells you 48 months up front at \$1.99, SiteGround sells you 12 at \$2.99 and then wants \$17.99.&lt;/p&gt;

&lt;p&gt;Hostinger's own price data makes the mechanism obvious. Its Premium plan lists a 48-month total of \$143.52 against an undiscounted total of \$575.52 for the same four years. You are buying four years of discount at once. Sign the same plan for 12 months instead and the rate is \$3.99, not \$2.99.&lt;/p&gt;

&lt;p&gt;If you want to run this for plans not in the table, our &lt;a href="https://hostingsift.com/tools/true-cost-calculator" rel="noopener noreferrer"&gt;true cost calculator&lt;/a&gt; does the arithmetic, and the &lt;a href="https://hostingsift.com/compare/a2-hosting-vs-siteground" rel="noopener noreferrer"&gt;A2 Hosting vs SiteGround comparison&lt;/a&gt; puts those two side by side with specs attached.&lt;/p&gt;

&lt;h2&gt;
  
  
  What renews, by product type
&lt;/h2&gt;

&lt;p&gt;Within those 645 plans, the pattern sorts cleanly by what you are buying.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan type&lt;/th&gt;
&lt;th&gt;Plans&lt;/th&gt;
&lt;th&gt;Renew higher&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;th&gt;Average markup&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Shared&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;td&gt;86&lt;/td&gt;
&lt;td&gt;96.6%&lt;/td&gt;
&lt;td&gt;3.11x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reseller&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;91.9%&lt;/td&gt;
&lt;td&gt;1.93x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WordPress&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;87.3%&lt;/td&gt;
&lt;td&gt;3.00x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VPS&lt;/td&gt;
&lt;td&gt;208&lt;/td&gt;
&lt;td&gt;172&lt;/td&gt;
&lt;td&gt;82.7%&lt;/td&gt;
&lt;td&gt;1.89x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WooCommerce&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;70.0%&lt;/td&gt;
&lt;td&gt;3.20x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;98&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;28.6%&lt;/td&gt;
&lt;td&gt;1.62x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dedicated&lt;/td&gt;
&lt;td&gt;131&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;19.8%&lt;/td&gt;
&lt;td&gt;1.38x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Website builder&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;7.43x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Shared hosting at 96.6% is the number most people already suspect. VPS at 82.7% is the one that surprises, because VPS shoppers tend to assume they have escaped the promo game by moving up a tier. Among hosts that publish renewal rates, they have not. The average VPS markup is gentler, 1.89x rather than 3.11x, but four out of five plans still rise.&lt;/p&gt;

&lt;p&gt;Dedicated servers are the safest ground at 19.8%, which makes commercial sense. Nobody signs a \$300 per month server on a teaser rate and then quietly absorbs a doubling.&lt;/p&gt;

&lt;p&gt;The website builder line is small enough to be noise, ten plans, but the 7.43x average is real and it is mostly IONOS.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 796 plans with one number, and what we cannot tell you
&lt;/h2&gt;

&lt;p&gt;Twenty-five providers record a single rate on every plan: Vultr with 93 plans, DigitalOcean with 90, ServaRica 80, Evolution Host 71, Cloudways 63, PebbleHost 57, ExtraVM 45, Hetzner 40, Linode 39, Private Hosting 37, Kinsta 32, Contabo 26, Netcup 25, Amazon Lightsail 25, Rocket.net 18, Fly.io 14, Kamatera 10, then Shopify, Diploi, Tiiny Host, Squarespace, Wix, Railway, WP Engine and Dynadot with single digits each.&lt;/p&gt;

&lt;p&gt;Our record for those 796 plans holds one price. That is a fact about their pricing pages, not a promise about their invoices. A host that has never printed a renewal rate has also never committed to one.&lt;/p&gt;

&lt;p&gt;There is a structural reason to expect stability from most of this group, and it is worth understanding rather than trusting. Metered infrastructure has no anniversary date. DigitalOcean, Vultr, Linode and Amazon Lightsail bill by the hour for what is running, so there is no contract to renew and no second number to print. Cloudways, Fly.io, Kamatera and Railway work the same way. Kinsta, Rocket.net and WP Engine sell flat subscriptions and market the absence of promo pricing as a feature.&lt;/p&gt;

&lt;p&gt;Hetzner, Contabo, Netcup and Evolution Host are the interesting middle. They sell fixed-term commitments in the way a shared host does, they just publish one rate for the term and for the renewal. That is a stronger signal than metered billing gives you, but it is still a pricing page, and pricing pages get edited. Hetzner repriced parts of its cloud range in June 2026, which tells you a flat-rate host can still move a price. It just moves it for everybody at once instead of moving it for you on your anniversary.&lt;/p&gt;

&lt;p&gt;What we can say honestly: for the plans in this group with history going back before June, the advertised price has been stable. What we cannot say is what any of them bills you in month 25, because they never told us.&lt;/p&gt;

&lt;h2&gt;
  
  
  The euro pattern is a product mix pattern
&lt;/h2&gt;

&lt;p&gt;Nine of the 50 providers bill in euros, covering 342 active plans, and only 43 of those renew higher. At 12.6% that looks like a continental discipline about pricing, and it is tempting to write it up that way.&lt;/p&gt;

&lt;p&gt;It falls apart on inspection. Seven of the nine euro hosts publish a single price, so their 209 plans contribute nothing but a zero to that percentage. All 43 markups sit in exactly two catalogs. &lt;a href="https://hostingsift.com/hosting/time4vps" rel="noopener noreferrer"&gt;Time4VPS&lt;/a&gt; accounts for 35 of them and &lt;a href="https://hostingsift.com/hosting/ovhcloud" rel="noopener noreferrer"&gt;OVHcloud&lt;/a&gt; for the other 8. Judged on the same 645-plan basis as everyone else, euro billing carries no advantage worth naming. The euro catalog is simply full of VPS and dedicated shops, and those are the categories with the lowest markup rates in any currency.&lt;/p&gt;

&lt;p&gt;Time4VPS is also the cleanest renewal structure in the dataset, and a useful worked example. Thirty-two of its 35 markups land on exactly 2.00x, on a 24-month term, with no variation. Compare its Container C8 against a similar Contabo box.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Specs&lt;/th&gt;
&lt;th&gt;First 24 months&lt;/th&gt;
&lt;th&gt;Months 25 to 48&lt;/th&gt;
&lt;th&gt;Four-year total&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Time4VPS Container C8&lt;/td&gt;
&lt;td&gt;3 vCPU, 8 GB RAM, 100 GB SSD, 8 TB transfer&lt;/td&gt;
&lt;td&gt;EUR 4.38/mo (EUR 105.12)&lt;/td&gt;
&lt;td&gt;EUR 8.76/mo (EUR 210.24)&lt;/td&gt;
&lt;td&gt;EUR 315.36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contabo Cloud VPS 4&lt;/td&gt;
&lt;td&gt;4 vCPU, 8 GB RAM, 100 GB SSD, unmetered&lt;/td&gt;
&lt;td&gt;EUR 4.40/mo (EUR 105.60)&lt;/td&gt;
&lt;td&gt;published rate: EUR 4.40/mo&lt;/td&gt;
&lt;td&gt;EUR 211.20 if it holds&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Contabo's box is 33% cheaper over four years on the published rates, with an extra vCPU. The caveat is the whole point of this article: Time4VPS has told you what month 25 costs and &lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt; has not. The same Time4VPS box costs EUR 12.99 on a rolling monthly term, so its 24-month rate is a genuine commitment discount rather than a bait rate. The &lt;a href="https://hostingsift.com/compare/contabo-vs-time4vps" rel="noopener noreferrer"&gt;Contabo vs Time4VPS page&lt;/a&gt; has the rest of the specs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advertised prices barely move
&lt;/h2&gt;

&lt;p&gt;We snapshot every tracked plan nightly. For the 1,030 plans whose history reaches back before 10 June 2026, that is 197,814 individual readings, and 811 of them (78.7%) have shown exactly one price on every single night.&lt;/p&gt;

&lt;p&gt;Split by group, the difference is small: 81.0% of single-price plans have never moved, against 74.8% of plans from renewal-publishing hosts. Both groups are dominated by stillness.&lt;/p&gt;

&lt;p&gt;Read that carefully, because it is easy to over-claim. Those readings measure the sticker price on a pricing page. They say nothing about what an existing customer is charged at renewal, because a host does not repost your invoice on its homepage. The honest summary is that hosting list prices are far more stable than the industry's discount theatre implies, and that the volatility you actually experience comes from your own contract rolling over rather than from the market repricing around you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would buy for a small WordPress site today
&lt;/h2&gt;

&lt;p&gt;On a four-year horizon, A2 Hosting's Starter plan at \$95.52 total is the cheapest deal among hosts that will tell you their renewal rate, and I would take it over anything else in the shared tier. Hostinger Premium at \$143.52 is the better buy if you need more than one site, and it is the plan I would recommend to somebody who wants a name they have heard of. Both make you pay four years up front, which is the actual trade.&lt;/p&gt;

&lt;p&gt;Avoid pairing a 12-month intro term with a 5x or steeper markup unless you have a migration in your calendar. SiteGround StartUp, FastComet Starter and GreenGeeks Lite all cost more over four years than plans with worse-looking multiples, and the reason is always the same: the discount runs out three or four times sooner.&lt;/p&gt;

&lt;p&gt;If renewal pricing bothers you as a matter of principle, the metered hosts remove the problem by removing the contract. You give up cPanel, one-click WordPress installs, phone support and somebody else keeping your backups, and for most small sites that is a bad trade. For a developer who already runs their own stack, it is the obvious one. Our &lt;a href="https://hostingsift.com/category/vps-hosting" rel="noopener noreferrer"&gt;VPS hosting&lt;/a&gt; and &lt;a href="https://hostingsift.com/category/shared-hosting" rel="noopener noreferrer"&gt;shared hosting&lt;/a&gt; category pages are sorted so you can see both worlds against each other.&lt;/p&gt;

&lt;p&gt;One last habit worth forming. Before you enter a card, find the renewal rate on the page. If you cannot find it, that is not the same as it not existing, and it is worth two minutes in the host's terms of service to check. All figures here were read from our production database on 7 September 2026 and cover 50 providers.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://hostingsift.com/blog/which-hosts-publish-renewal-prices-2026" rel="noopener noreferrer"&gt;hostingsift.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hosting</category>
      <category>webdev</category>
      <category>devops</category>
      <category>pricing</category>
    </item>
    <item>
      <title>AI Crawlers Are Eating Your Hosting Plan: The 2026 Bot Traffic Problem</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Mon, 07 Sep 2026 17:41:59 +0000</pubDate>
      <link>https://dev.to/hostingsift/ai-crawlers-are-eating-your-hosting-plan-the-2026-bot-traffic-problem-2hc3</link>
      <guid>https://dev.to/hostingsift/ai-crawlers-are-eating-your-hosting-plan-the-2026-bot-traffic-problem-2hc3</guid>
      <description>&lt;p&gt;&lt;em&gt;Updated 21 September 2026. The unmetered VPS table was re-checked against our database on that date. Hetzner's CX23 is no longer sold after &lt;a href="https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/" rel="noopener noreferrer"&gt;its June 2026 repricing&lt;/a&gt;, and Contabo replaced its Cloud VPS 10 with the Cloud VPS 4.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Your traffic graph doubled last month. Your revenue did not. Before you celebrate or panic, check the user agents, because there is a good chance most of that "traffic" was GPTBot, ClaudeBot, Amazonbot and a few dozen crawlers you have never heard of, quietly working through every URL you have ever published.&lt;/p&gt;

&lt;p&gt;This has stopped being a curiosity and become a line item. Automated requests made up 57.5% of all web traffic by June 2026 according to Cloudflare Radar, up from 53% across 2025, which was already the first calendar year where machines outnumbered people. AI-driven crawling specifically grew roughly 300% year over year.&lt;/p&gt;

&lt;p&gt;Two things follow from that, and most site owners only know about one of them. The first is that bots consume the bandwidth, visits and CPU cycles you are paying for. The second is stranger: some hosts have quietly started blocking AI crawlers on your behalf, which protects your bill and erases you from AI answers at the same time. Both of those are decisions you should be making, not discovering.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Bots are now the majority of web requests. On a small site, AI crawlers routinely account for 30% to 50% of raw bandwidth.&lt;/li&gt;
&lt;li&gt;Over half of AI crawler traffic re-fetches pages that have not changed, per Cloudflare's own numbers. You are paying to serve the same article to the same bot repeatedly.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hostingsift.com/hosting/kinsta" rel="noopener noreferrer"&gt;Kinsta&lt;/a&gt; stopped counting bad-bot bandwidth against plan limits in November 2025. &lt;a href="https://hostingsift.com/hosting/wp-engine" rel="noopener noreferrer"&gt;WP Engine&lt;/a&gt; never counted bots as billable visits, but does rate-limit them at the platform level, which is a different trade-off entirely.&lt;/li&gt;
&lt;li&gt;Unmetered and high-allowance VPS plans are effectively immune to the cost side. &lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt; Cloud VPS 4 gives you 4 vCPU, 8 GB RAM and unlimited traffic for 4.40 EUR/mo.&lt;/li&gt;
&lt;li&gt;On 15 September 2026 Cloudflare starts blocking mixed-use AI crawlers by default on ad-bearing pages. If you are on the free tier, that default lands on you whether you asked for it or not.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How much traffic are we actually talking about?
&lt;/h2&gt;

&lt;p&gt;The numbers are worse than the abstraction suggests. In a single 24-hour window, bots hit add-to-cart URLs on WordPress sites 7.67 million times. ClaudeBot alone was responsible for about 3.75 million of those. Add-to-cart is the single most expensive request a WooCommerce site can serve: uncacheable, database-heavy, session-creating. Bots were hammering it millions of times a day for no commercial reason whatsoever.&lt;/p&gt;

&lt;p&gt;One crawler in a documented case generated 550 million requests over 30 days against a single property before anyone stopped it. That is not a traffic spike, that is a sustained load test you did not order and cannot invoice anyone for.&lt;/p&gt;

&lt;p&gt;The waste is what stings. Cloudflare found that more than half of AI crawler traffic is re-fetching content that has not changed since the last visit. Your 2023 blog post gets pulled down again and again, at your expense, so a model can confirm it still says what it said last week.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four ways your host makes you pay for it
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Visit-metered plans
&lt;/h3&gt;

&lt;p&gt;Premium managed WordPress hosting has historically sold capacity in "visits". The definition matters enormously here. WP Engine counts one visit as one unique IP address per day, and explicitly excludes known and suspected bot user agents, plus requests that only touch static assets. Kinsta filters most well-known bot user agents out of its visit counts too, though it acknowledges that bots which do not identify themselves still consume server resources and may slip into the total.&lt;/p&gt;

&lt;p&gt;That exclusion is doing a lot of load-bearing work. A crawler that identifies itself politely as GPTBot is free. A scraper rotating residential IPs with a Chrome user agent is indistinguishable from a reader, and it counts.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Entry plan&lt;/th&gt;
&lt;th&gt;Price/mo&lt;/th&gt;
&lt;th&gt;Allowance&lt;/th&gt;
&lt;th&gt;Storage&lt;/th&gt;
&lt;th&gt;Sites&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/rocketnet" rel="noopener noreferrer"&gt;Rocket.net&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Starter&lt;/td&gt;
&lt;td&gt;$25.00&lt;/td&gt;
&lt;td&gt;50 GB bandwidth&lt;/td&gt;
&lt;td&gt;10 GB NVMe&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/kinsta" rel="noopener noreferrer"&gt;Kinsta&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Single 35k&lt;/td&gt;
&lt;td&gt;$29.17&lt;/td&gt;
&lt;td&gt;35,000 visits/mo&lt;/td&gt;
&lt;td&gt;10 GB&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/kinsta" rel="noopener noreferrer"&gt;Kinsta&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Single 20GB&lt;/td&gt;
&lt;td&gt;$29.17&lt;/td&gt;
&lt;td&gt;20 GB bandwidth&lt;/td&gt;
&lt;td&gt;10 GB&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/wp-engine" rel="noopener noreferrer"&gt;WP Engine&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Essential&lt;/td&gt;
&lt;td&gt;$28.00&lt;/td&gt;
&lt;td&gt;75 GB bandwidth&lt;/td&gt;
&lt;td&gt;10-50 GB&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/cloudways" rel="noopener noreferrer"&gt;Cloudways&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Autonomous Growth&lt;/td&gt;
&lt;td&gt;$99.00&lt;/td&gt;
&lt;td&gt;150 GB bandwidth&lt;/td&gt;
&lt;td&gt;20 GB&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Look at the Kinsta rows. Same price, two different meters: 35,000 visits or 20 GB of bandwidth. That choice exists precisely because bot traffic broke the visit model. Kinsta announced on 4 November 2025 that bandwidth consumed by unwanted bots and scrapers no longer counts against plan limits, and gave customers the option to pick whichever meter suits their traffic shape. If your audience is small but your content is heavily crawled, visits are the safer unit. If you serve large media to few people, bandwidth is.&lt;/p&gt;

&lt;p&gt;Also note how tight these allowances are in absolute terms. WP Engine's Essential plan includes 75 GB of bandwidth for $28/mo. A determined crawl of a media-heavy site can eat that in days. Compare the same $30 against a &lt;a href="https://hostingsift.com/category/vps-hosting" rel="noopener noreferrer"&gt;VPS plan&lt;/a&gt; and you are looking at multiple terabytes.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. "Unlimited" shared hosting
&lt;/h3&gt;

&lt;p&gt;Shared hosts do not meter your bandwidth, so on paper bots are free. In practice they meter something else: CPU seconds, entry processes, I/O operations, inodes. A crawler that requests 40,000 uncached PHP pages in an afternoon does not blow a bandwidth cap, it blows your CPU quota, and the account gets throttled or suspended. The bill arrives as an upgrade prompt rather than an overage line.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Intro price&lt;/th&gt;
&lt;th&gt;Renewal&lt;/th&gt;
&lt;th&gt;Bandwidth&lt;/th&gt;
&lt;th&gt;Storage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/chemicloud" rel="noopener noreferrer"&gt;ChemiCloud&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Starter&lt;/td&gt;
&lt;td&gt;$1.95/mo&lt;/td&gt;
&lt;td&gt;$11.95/mo&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;20 GB NVMe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/namehero" rel="noopener noreferrer"&gt;NameHero&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Starter Cloud&lt;/td&gt;
&lt;td&gt;$2.91/mo&lt;/td&gt;
&lt;td&gt;$11.64/mo&lt;/td&gt;
&lt;td&gt;Unmetered&lt;/td&gt;
&lt;td&gt;25 GB NVMe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/greengeeks" rel="noopener noreferrer"&gt;GreenGeeks&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Lite&lt;/td&gt;
&lt;td&gt;$2.95/mo&lt;/td&gt;
&lt;td&gt;$13.95/mo&lt;/td&gt;
&lt;td&gt;Unmetered&lt;/td&gt;
&lt;td&gt;25 GB SSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/hostinger" rel="noopener noreferrer"&gt;Hostinger&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Premium&lt;/td&gt;
&lt;td&gt;$2.99/mo&lt;/td&gt;
&lt;td&gt;$10.99/mo&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;20 GB SSD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We have written before about &lt;a href="https://hostingsift.com/blog/what-unlimited-hosting-really-means" rel="noopener noreferrer"&gt;what "unlimited" hosting really means&lt;/a&gt;. Bot traffic is the fastest way to find out for yourself.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Metered egress on cloud platforms
&lt;/h3&gt;

&lt;p&gt;This is the model where a crawl storm turns into a genuinely alarming invoice. Platforms that bill per gigabyte of egress charge the same for a bot as for a customer. There is no bot exclusion, because there is no concept of a visit at all, just bytes leaving the network. We covered the mechanics in detail in &lt;a href="https://hostingsift.com/blog/bandwidth-overage-cdn-pricing-traps-2026" rel="noopener noreferrer"&gt;bandwidth overage and CDN pricing traps&lt;/a&gt;, and AI crawlers have made that article age faster than we expected.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Nothing, because your plan has headroom
&lt;/h3&gt;

&lt;p&gt;The unglamorous answer to the whole problem is buying a plan where the traffic simply does not matter. Unmetered European VPS providers charge a flat monthly fee and do not care whether the bytes went to a reader in Berlin or a datacenter in Oregon.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price/mo&lt;/th&gt;
&lt;th&gt;Bandwidth&lt;/th&gt;
&lt;th&gt;CPU&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;Storage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/time4vps" rel="noopener noreferrer"&gt;Time4VPS&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Linux 2&lt;/td&gt;
&lt;td&gt;2.88 EUR&lt;/td&gt;
&lt;td&gt;4 TB&lt;/td&gt;
&lt;td&gt;1 core&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;25 GB SSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/interserver" rel="noopener noreferrer"&gt;InterServer&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1 Slice&lt;/td&gt;
&lt;td&gt;$3.00&lt;/td&gt;
&lt;td&gt;2 TB&lt;/td&gt;
&lt;td&gt;1 core&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;40 GB SSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Cloud VPS 4&lt;/td&gt;
&lt;td&gt;4.40 EUR&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;4 vCPU&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;100 GB SSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/hostwinds" rel="noopener noreferrer"&gt;Hostwinds&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Unmanaged SSD Cloud 1&lt;/td&gt;
&lt;td&gt;$4.99&lt;/td&gt;
&lt;td&gt;1 TB&lt;/td&gt;
&lt;td&gt;1 vCPU&lt;/td&gt;
&lt;td&gt;1 GB&lt;/td&gt;
&lt;td&gt;30 GB SSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/namehero" rel="noopener noreferrer"&gt;NameHero&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Starter VPS&lt;/td&gt;
&lt;td&gt;$5.44&lt;/td&gt;
&lt;td&gt;4 TB&lt;/td&gt;
&lt;td&gt;1 core&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;80 GB NVMe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;netcup&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;VPS 500 G12&lt;/td&gt;
&lt;td&gt;5.91 EUR&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;2 vCPU&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;128 GB NVMe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;CPX12&lt;/td&gt;
&lt;td&gt;11.49 EUR&lt;/td&gt;
&lt;td&gt;20 TB&lt;/td&gt;
&lt;td&gt;1 vCPU&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;40 GB NVMe&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Contabo and Hetzner list prices before VAT. netcup's price includes 19% German VAT and assumes a 12-month term.&lt;/p&gt;

&lt;p&gt;Contabo at 4.40 EUR with unlimited traffic and 8 GB of RAM is the single most bot-proof entry on this page. Hetzner's 20 TB allowance is functionally unlimited for any site that is not distributing video, but its cheapest plan now costs 11.49 EUR after the June 2026 repricing. The trade-off is that you now run the server, which is real work. Our &lt;a href="https://hostingsift.com/blog/managed-vs-unmanaged-vps" rel="noopener noreferrer"&gt;managed vs unmanaged VPS breakdown&lt;/a&gt; covers whether that trade is worth it for you, and &lt;a href="https://hostingsift.com/compare/hetzner-vs-netcup" rel="noopener noreferrer"&gt;Hetzner vs Netcup&lt;/a&gt; settles the European price fight.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part nobody warned you about: your host may already be blocking AI bots
&lt;/h2&gt;

&lt;p&gt;Here is where it gets genuinely interesting, and where the cost conversation flips into a visibility conversation.&lt;/p&gt;

&lt;p&gt;Testing published in April 2026 found that WP Engine enforces platform-level rate limiting on high-impact crawlers. ClaudeBot requests were rate-limited (HTTP 429) 29% of the time, GPTBot 29%, and Amazonbot 51%. WP Engine support confirmed the behaviour, describing it as protection for overall server performance, and stated it cannot be selectively disabled per bot.&lt;/p&gt;

&lt;p&gt;Other managed platforms went the other way. Kinsta's CTO said in March 2026 that Kinsta will not block at the platform level. Pressable's documentation states it does not disallow these bots by default. Pantheon states plainly that it does not block identified bot traffic from entering the platform.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Blocks AI crawlers by default?&lt;/th&gt;
&lt;th&gt;Bot traffic billed?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/wp-engine" rel="noopener noreferrer"&gt;WP Engine&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Yes, platform-wide rate limiting on high-impact bots, not disableable per bot&lt;/td&gt;
&lt;td&gt;No, known bots excluded from billable visits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/kinsta" rel="noopener noreferrer"&gt;Kinsta&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;No, stated policy against platform-level blocking&lt;/td&gt;
&lt;td&gt;No, bad-bot bandwidth excluded since Nov 2025&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pressable&lt;/td&gt;
&lt;td&gt;No, per published documentation&lt;/td&gt;
&lt;td&gt;Visit-based plans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pantheon&lt;/td&gt;
&lt;td&gt;No, explicitly does not block identified bots&lt;/td&gt;
&lt;td&gt;Visit-based plans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-managed VPS&lt;/td&gt;
&lt;td&gt;Only what you configure&lt;/td&gt;
&lt;td&gt;Only if your plan is metered&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Why does that matter beyond principle? Because on the same test property, access rate and citation rate tracked each other closely. GoogleBot had roughly 100% access and the site appeared in 37.8% of Google AI Mode responses. PerplexityBot had 100% access and 7.8% citation presence. ClaudeBot, at 57% access, produced a 0.0% citation rate in Claude.&lt;/p&gt;

&lt;p&gt;That is one site, one test window, and correlation is not proof. But the direction is not subtle. Where the crawler can read you, the model cites you. Where it cannot, you are absent from an answer surface that is quietly taking a growing share of the queries that used to become clicks.&lt;/p&gt;

&lt;p&gt;So the decision is not "bots bad, block them". It is a trade you should make deliberately: pay a little bandwidth to stay in the index that increasingly mediates discovery, or save the bandwidth and accept invisibility. Choosing by accident, because your host set a default you never saw, is the only genuinely wrong answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes on 15 September 2026
&lt;/h2&gt;

&lt;p&gt;Cloudflare has been escalating this since it became the first major infrastructure provider to block AI crawlers by default. As of 15 September 2026, mixed-use crawlers, the ones that blend search indexing with AI training and agentic browsing, get blocked by default on pages that carry ads. The default applies to new Cloudflare customers, new sites added by existing customers, and every site on the free tier.&lt;/p&gt;

&lt;p&gt;If you run an ad-supported site behind Cloudflare's free plan, that switch flips for you automatically. Worth knowing before it happens rather than after your AI referral traffic quietly flatlines.&lt;/p&gt;

&lt;p&gt;Cloudflare has also moved from Pay Per Crawl to Pay Per Use, which pays publishers when their content is actually used in an answer rather than merely fetched. Good idea in principle. In practice it is early, partner-limited, and not something a site doing 5,000 visits a month should be building a strategy around.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to actually do this week
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Look at your logs before you change anything.&lt;/strong&gt; Filter by user agent and count requests and bytes for GPTBot, ClaudeBot, PerplexityBot, Amazonbot, Bytespider, CCBot and Meta-ExternalAgent. Until you know your split, everything else is guesswork.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Find out whether your host is already blocking.&lt;/strong&gt; Ask support directly: do you rate-limit or block AI crawlers at the platform level, and can I opt out? On WP Engine the answer is yes and no respectively. Do not assume your robots.txt is the only thing in play.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Decide per crawler, not globally.&lt;/strong&gt; Training crawlers that never send referrals are a different proposition from retrieval crawlers that cite sources with links. Blocking GPTBot and allowing OAI-SearchBot is a coherent position. Blocking everything with a wildcard usually is not.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Put caching in front of the problem.&lt;/strong&gt; A crawler hitting a full page cache costs you bytes and nothing else. The same crawler hitting uncached PHP costs you CPU, database queries and the throttling that follows. This is the single highest-leverage fix on shared hosting.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Rate-limit rather than ban.&lt;/strong&gt; A crawl-delay or an edge rate limit keeps you in the index while capping the damage. A hard 403 removes you from it.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Protect the expensive endpoints specifically.&lt;/strong&gt; Cart, checkout, search, faceted filters, calendar pages. Those are where 7.67 million daily bot hits become someone's downtime.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;If bots are more than a third of your bandwidth, reprice.&lt;/strong&gt; Run the numbers through our &lt;a href="https://hostingsift.com/tools/true-cost-calculator" rel="noopener noreferrer"&gt;true cost calculator&lt;/a&gt;. Paying $30/mo for 75 GB while crawlers eat 25 GB of it is a worse deal than 5.91 EUR for unmetered traffic at netcup.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Our recommendation, by situation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Small WordPress site, non-technical owner.&lt;/strong&gt; Stay on &lt;a href="https://hostingsift.com/category/shared-hosting" rel="noopener noreferrer"&gt;shared hosting&lt;/a&gt;, turn on full-page caching, and add a crawl-delay. Hostinger Premium at $2.99 intro and $10.99 on renewal is fine until bots become a CPU problem rather than a bandwidth one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Content site that depends on being found.&lt;/strong&gt; Do not host anywhere that blocks AI crawlers for you. That points at &lt;a href="https://hostingsift.com/hosting/kinsta" rel="noopener noreferrer"&gt;Kinsta&lt;/a&gt; among the premium managed options, and the bandwidth-metered plan rather than the visits one now that bad-bot traffic is excluded. See &lt;a href="https://hostingsift.com/compare/kinsta-vs-wp-engine" rel="noopener noreferrer"&gt;Kinsta vs WP Engine&lt;/a&gt; for the wider comparison.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WooCommerce store.&lt;/strong&gt; Your cart endpoints are the target. Get proper edge caching, rate-limit uncacheable paths, and pick a host with real CPU headroom rather than a generous bandwidth number. &lt;a href="https://hostingsift.com/category/woocommerce-hosting" rel="noopener noreferrer"&gt;WooCommerce hosting&lt;/a&gt; is worth the premium here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer or agency running your own stack.&lt;/strong&gt; Take the unmetered VPS and stop thinking about it. Contabo at 4.40 EUR or netcup VPS 500 G12 at 5.91 EUR removes the cost side of the problem entirely, leaving you to make the visibility decision on its own merits. Browse &lt;a href="https://hostingsift.com/category/cloud-hosting" rel="noopener noreferrer"&gt;cloud hosting&lt;/a&gt; and &lt;a href="https://hostingsift.com/category/vps-hosting" rel="noopener noreferrer"&gt;VPS hosting&lt;/a&gt; for the full list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;AI crawlers turned a rounding error into a budget line and a distribution question at the same time. The cost half is solvable with cheap infrastructure: unmetered European VPS plans start at a few euros a month and make the whole conversation moot. The visibility half is not solvable with money, only with an explicit decision about who gets to read your content.&lt;/p&gt;

&lt;p&gt;The worst position is the common one: on a metered plan, with a host quietly rate-limiting crawlers you never evaluated, paying for bot bandwidth while disappearing from the answers those bots feed. Check your logs, ask your host the direct question, and pick your side on purpose.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Prices in this article come from the HostingSift database and were current in August 2026. Intro prices are promotional; renewal rates are listed where they differ. Third-party statistics are attributed inline and reflect published figures as of mid-2026.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://hostingsift.com/blog/ai-crawler-traffic-hosting-costs-2026" rel="noopener noreferrer"&gt;hostingsift.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>hosting</category>
      <category>webdev</category>
      <category>devops</category>
    </item>
    <item>
      <title>VPS Price Per GB of RAM: 711 Plans Across 39 Hosts</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Mon, 31 Aug 2026 11:32:21 +0000</pubDate>
      <link>https://dev.to/hostingsift/vps-price-per-gb-of-ram-711-plans-across-39-hosts-8d6</link>
      <guid>https://dev.to/hostingsift/vps-price-per-gb-of-ram-711-plans-across-39-hosts-8d6</guid>
      <description>&lt;p&gt;A gigabyte of RAM on a virtual server costs \$0.47 per month. It also costs \$58.00 per month. Same unit, same billing period, both prices live on 31 August 2026.&lt;/p&gt;

&lt;p&gt;We priced every plan in our database that publishes a RAM figure: 711 active VPS and cloud plans from 39 providers, EUR prices converted to USD, everything normalised to dollars per gigabyte per month. The median came out at exactly \$6.00. Half the market sits above that line, half below, and the distance between the two ends is 123x.&lt;/p&gt;

&lt;p&gt;That spread is not a mistake, and it is not all margin either. But it is far wider than most buyers assume, and the reason it stays wide is that almost nobody prices RAM by the gigabyte when they shop. They look at the plan name and the monthly figure.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we counted
&lt;/h2&gt;

&lt;p&gt;Every number here comes from our nightly price readings, taken on 30 and 31 August 2026. The rules we applied:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only plans currently active and in stock, with both a price and a stated RAM figure. VPS and cloud categories, no shared hosting, no dedicated metal.&lt;/li&gt;
&lt;li&gt;Prices converted to USD at our stored rate for the eight EUR-billed hosts in the set (Contabo, Hetzner, Netcup, OVHcloud, Private Hosting, Diploi, Evolution Host, Time4VPS).&lt;/li&gt;
&lt;li&gt;Monthly-equivalent pricing. A 24-month Contabo term shows as its per-month figure, which is how the provider advertises it.&lt;/li&gt;
&lt;li&gt;Railway's Pro plan is excluded. Its 1 TB figure is an account ceiling rather than provisioned memory, and including it would have handed the crown to a plan that does not give you a 1 TB server.&lt;/li&gt;
&lt;li&gt;Fly.io's storage and bandwidth are usage-based and not counted against the RAM price.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The cheapest gigabyte at each host
&lt;/h2&gt;

&lt;p&gt;For every provider we took its single best plan by dollars per GB, then looked up what that same plan renews at. The renewal column is where the ranking falls apart.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Best plan&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;Price/mo&lt;/th&gt;
&lt;th&gt;\$/GB intro&lt;/th&gt;
&lt;th&gt;\$/GB renewal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Contabo&lt;/td&gt;
&lt;td&gt;Cloud VPS 18&lt;/td&gt;
&lt;td&gt;96 GB&lt;/td&gt;
&lt;td&gt;\$45.08&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;\$0.47&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;\$0.47&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time4VPS&lt;/td&gt;
&lt;td&gt;Container C16&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;\$8.06&lt;/td&gt;
&lt;td&gt;\$0.50&lt;/td&gt;
&lt;td&gt;\$1.01&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NameHero&lt;/td&gt;
&lt;td&gt;Business VPS&lt;/td&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;\$20.68&lt;/td&gt;
&lt;td&gt;\$0.65&lt;/td&gt;
&lt;td&gt;\$1.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IONOS&lt;/td&gt;
&lt;td&gt;VPS XL+&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;\$11.00&lt;/td&gt;
&lt;td&gt;\$0.69&lt;/td&gt;
&lt;td&gt;\$2.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OVHcloud&lt;/td&gt;
&lt;td&gt;VPS-6 2026&lt;/td&gt;
&lt;td&gt;96 GB&lt;/td&gt;
&lt;td&gt;\$71.35&lt;/td&gt;
&lt;td&gt;\$0.74&lt;/td&gt;
&lt;td&gt;\$0.74&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hostinger&lt;/td&gt;
&lt;td&gt;KVM 4&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;\$12.99&lt;/td&gt;
&lt;td&gt;\$0.81&lt;/td&gt;
&lt;td&gt;\$1.81&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Netcup&lt;/td&gt;
&lt;td&gt;VPS 8000 G12&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;\$55.14&lt;/td&gt;
&lt;td&gt;\$0.86&lt;/td&gt;
&lt;td&gt;\$0.86&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HostGator&lt;/td&gt;
&lt;td&gt;Snappy 2000 NVMe 4&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;\$4.18&lt;/td&gt;
&lt;td&gt;\$1.04&lt;/td&gt;
&lt;td&gt;\$2.34&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HostArmada&lt;/td&gt;
&lt;td&gt;Unmanaged Ignition&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;\$16.89&lt;/td&gt;
&lt;td&gt;\$1.06&lt;/td&gt;
&lt;td&gt;\$2.64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DreamHost&lt;/td&gt;
&lt;td&gt;Stack 16&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;\$17.49&lt;/td&gt;
&lt;td&gt;\$1.09&lt;/td&gt;
&lt;td&gt;\$1.66&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ServaRica&lt;/td&gt;
&lt;td&gt;NVMe Cheetah&lt;/td&gt;
&lt;td&gt;6 GB&lt;/td&gt;
&lt;td&gt;\$7.00&lt;/td&gt;
&lt;td&gt;\$1.17&lt;/td&gt;
&lt;td&gt;\$1.17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;InMotion Hosting&lt;/td&gt;
&lt;td&gt;VPS 8 vCPU&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;\$19.99&lt;/td&gt;
&lt;td&gt;\$1.25&lt;/td&gt;
&lt;td&gt;\$3.56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Private Hosting&lt;/td&gt;
&lt;td&gt;VPS-RAM-64GB&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;\$91.99&lt;/td&gt;
&lt;td&gt;\$1.44&lt;/td&gt;
&lt;td&gt;\$1.44&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;InterServer&lt;/td&gt;
&lt;td&gt;1 Slice&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;\$3.00&lt;/td&gt;
&lt;td&gt;\$1.50&lt;/td&gt;
&lt;td&gt;\$1.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bluehost&lt;/td&gt;
&lt;td&gt;NVME 8&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;\$12.99&lt;/td&gt;
&lt;td&gt;\$1.62&lt;/td&gt;
&lt;td&gt;\$3.62&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A2 Hosting&lt;/td&gt;
&lt;td&gt;Self Managed Linux L&lt;/td&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;\$54.98&lt;/td&gt;
&lt;td&gt;\$1.72&lt;/td&gt;
&lt;td&gt;\$3.44&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GoDaddy&lt;/td&gt;
&lt;td&gt;32 vCPU / 128 GB&lt;/td&gt;
&lt;td&gt;128 GB&lt;/td&gt;
&lt;td&gt;\$219.99&lt;/td&gt;
&lt;td&gt;\$1.72&lt;/td&gt;
&lt;td&gt;\$2.66&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Namecheap&lt;/td&gt;
&lt;td&gt;Hypernova&lt;/td&gt;
&lt;td&gt;24 GB&lt;/td&gt;
&lt;td&gt;\$46.88&lt;/td&gt;
&lt;td&gt;\$1.95&lt;/td&gt;
&lt;td&gt;\$2.20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LiquidWeb&lt;/td&gt;
&lt;td&gt;VPS 4GB (Self-Managed)&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;\$8.50&lt;/td&gt;
&lt;td&gt;\$2.12&lt;/td&gt;
&lt;td&gt;\$4.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linode&lt;/td&gt;
&lt;td&gt;High Memory 24GB&lt;/td&gt;
&lt;td&gt;24 GB&lt;/td&gt;
&lt;td&gt;\$60.00&lt;/td&gt;
&lt;td&gt;\$2.50&lt;/td&gt;
&lt;td&gt;\$2.50&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Below that group the numbers climb quickly. AWS Lightsail's best memory ratio is \$4.50/GB, Hetzner's cloud line \$4.67, Vultr \$5.00, DigitalOcean \$5.25. Cloudways cannot get under \$9.66 and SiteGround's cloud entry point works out at \$12.50 per GB.&lt;/p&gt;

&lt;p&gt;Contabo taking first place surprises nobody who has shopped European VPS before. What surprises people is second place: Time4VPS, a Lithuanian host most buyers have never heard of, selling 16 GB containers for \$8.06 a month. Its catch is in the renewal column, where the price doubles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Renewal reshuffles the whole board
&lt;/h2&gt;

&lt;p&gt;Twelve of the 39 hosts charge exactly what they advertise, forever. The rest use an intro rate, and the size of the step varies enormously.&lt;/p&gt;

&lt;p&gt;IONOS runs the steepest one in the set. VPS XL+ is the fourth cheapest gigabyte in the market at signup and drops to sixteenth once the first year ends, because \$11.00 becomes \$44.00. That is a 4x step on a plan whose specs do not change. IONOS is far from alone: InMotion Hosting moves from twelfth to twenty-first, HostArmada from ninth to seventeenth, A2 Hosting from sixteenth to twenty-second.&lt;/p&gt;

&lt;p&gt;Movement runs the other way too. OVHcloud is fifth cheapest at signup and second cheapest at renewal. Netcup goes from seventh to third. InterServer, whose flat \$1.50 per GB looks unremarkable next to Contabo's \$0.47, climbs from fourteenth to eighth simply by not raising anything.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Rank at signup&lt;/th&gt;
&lt;th&gt;Rank at renewal&lt;/th&gt;
&lt;th&gt;Move&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OVHcloud&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;+3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Netcup&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;+4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ServaRica&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;+6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;InterServer&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;+6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time4VPS&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;-2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NameHero&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;-6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HostArmada&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;-8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;InMotion Hosting&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;-9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IONOS&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;-12&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Contabo holds first place in both columns. So does its price, which is the entire argument for buying there.&lt;/p&gt;

&lt;p&gt;If you want to see what a specific step costs you over a full term rather than a month, our &lt;a href="https://hostingsift.com/tools/true-cost-calculator" rel="noopener noreferrer"&gt;true cost calculator&lt;/a&gt; does that arithmetic, and we went deeper on the pattern in &lt;a href="https://hostingsift.com/blog/monthly-vs-annual-vs-3-year-hosting-plans" rel="noopener noreferrer"&gt;monthly vs annual vs 3-year plans&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What 8 GB actually costs, host by host
&lt;/h2&gt;

&lt;p&gt;Ratios are useful for ranking. For a buying decision you want a fixed basket, so here is the same question asked concretely: what does an 8 GB server cost, and what else comes with it?&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;vCPU&lt;/th&gt;
&lt;th&gt;Storage&lt;/th&gt;
&lt;th&gt;Price/mo&lt;/th&gt;
&lt;th&gt;Renews at&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Time4VPS&lt;/td&gt;
&lt;td&gt;Container C8&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;100 GB SSD&lt;/td&gt;
&lt;td&gt;\$5.04&lt;/td&gt;
&lt;td&gt;\$10.07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contabo&lt;/td&gt;
&lt;td&gt;Cloud VPS 4&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;100 GB SSD&lt;/td&gt;
&lt;td&gt;\$5.06&lt;/td&gt;
&lt;td&gt;\$5.06&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IONOS&lt;/td&gt;
&lt;td&gt;VPS L+&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;240 GB NVMe&lt;/td&gt;
&lt;td&gt;\$6.00&lt;/td&gt;
&lt;td&gt;\$21.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OVHcloud&lt;/td&gt;
&lt;td&gt;VPS-1 2026&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;75 GB NVMe&lt;/td&gt;
&lt;td&gt;\$6.35&lt;/td&gt;
&lt;td&gt;\$6.35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NameHero&lt;/td&gt;
&lt;td&gt;Plus VPS&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;100 GB NVMe&lt;/td&gt;
&lt;td&gt;\$6.85&lt;/td&gt;
&lt;td&gt;\$15.92&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HostGator&lt;/td&gt;
&lt;td&gt;Snappy 4000 NVMe 8&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;200 GB NVMe&lt;/td&gt;
&lt;td&gt;\$8.36&lt;/td&gt;
&lt;td&gt;\$18.70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hostinger&lt;/td&gt;
&lt;td&gt;KVM 2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;100 GB NVMe&lt;/td&gt;
&lt;td&gt;\$8.99&lt;/td&gt;
&lt;td&gt;\$14.99&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DreamHost&lt;/td&gt;
&lt;td&gt;Stack 8&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;150 GB NVMe&lt;/td&gt;
&lt;td&gt;\$10.99&lt;/td&gt;
&lt;td&gt;\$16.99&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Netcup&lt;/td&gt;
&lt;td&gt;VPS 1000 G12&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;256 GB NVMe&lt;/td&gt;
&lt;td&gt;\$11.93&lt;/td&gt;
&lt;td&gt;\$11.93&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;InterServer&lt;/td&gt;
&lt;td&gt;4 Slices&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;160 GB SSD&lt;/td&gt;
&lt;td&gt;\$12.00&lt;/td&gt;
&lt;td&gt;\$12.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bluehost&lt;/td&gt;
&lt;td&gt;NVME 8&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;200 GB NVMe&lt;/td&gt;
&lt;td&gt;\$12.99&lt;/td&gt;
&lt;td&gt;\$28.99&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Private Hosting&lt;/td&gt;
&lt;td&gt;VPS-RAM-8GB&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;50 GB NVMe&lt;/td&gt;
&lt;td&gt;\$14.94&lt;/td&gt;
&lt;td&gt;\$14.94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A2 Hosting&lt;/td&gt;
&lt;td&gt;Self Managed Linux S&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;160 GB NVMe&lt;/td&gt;
&lt;td&gt;\$19.99&lt;/td&gt;
&lt;td&gt;\$39.99&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LiquidWeb&lt;/td&gt;
&lt;td&gt;VPS 8GB Self-Managed&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;240 GB SSD&lt;/td&gt;
&lt;td&gt;\$22.50&lt;/td&gt;
&lt;td&gt;\$45.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;CC Regular 4vCPU/8 GB&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;160 GB SSD&lt;/td&gt;
&lt;td&gt;\$40.00&lt;/td&gt;
&lt;td&gt;\$40.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hetzner&lt;/td&gt;
&lt;td&gt;CPX32&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;160 GB NVMe&lt;/td&gt;
&lt;td&gt;\$40.81&lt;/td&gt;
&lt;td&gt;\$40.81&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DigitalOcean&lt;/td&gt;
&lt;td&gt;Basic Regular 8 GiB&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;160 GB NVMe&lt;/td&gt;
&lt;td&gt;\$48.00&lt;/td&gt;
&lt;td&gt;\$48.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linode&lt;/td&gt;
&lt;td&gt;Shared Linode 8GB&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;160 GB SSD&lt;/td&gt;
&lt;td&gt;\$48.00&lt;/td&gt;
&lt;td&gt;\$48.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudways&lt;/td&gt;
&lt;td&gt;DO Basic Large&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;160 GB NVMe&lt;/td&gt;
&lt;td&gt;\$99.00&lt;/td&gt;
&lt;td&gt;\$99.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteGround&lt;/td&gt;
&lt;td&gt;Jump Start&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;40 GB SSD&lt;/td&gt;
&lt;td&gt;\$100.00&lt;/td&gt;
&lt;td&gt;\$100.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Look at the bottom four rows against the top four. Cloudways charges \$99 for a DigitalOcean droplet that DigitalOcean sells for \$48, and the \$51 difference is the managed layer: patching, staging, a control panel, support that answers. Whether that is worth 2x depends entirely on how many hours of your own time you were planning to spend on server administration. We took that question apart in &lt;a href="https://hostingsift.com/blog/managed-vs-unmanaged-vps" rel="noopener noreferrer"&gt;managed vs unmanaged VPS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;SiteGround's Jump Start is the one row that resists any justification on the numbers. \$100 for 8 GB and 40 GB of disk is 20x Contabo's rate for the same memory and less than half the storage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bigger boxes do not get you cheaper RAM
&lt;/h2&gt;

&lt;p&gt;Standard intuition says memory gets cheaper per gigabyte as you scale up. Across the whole market that intuition is wrong.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;RAM size&lt;/th&gt;
&lt;th&gt;Plans&lt;/th&gt;
&lt;th&gt;Median \$/GB&lt;/th&gt;
&lt;th&gt;Cheapest \$/GB&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Under 4 GB&lt;/td&gt;
&lt;td&gt;104&lt;/td&gt;
&lt;td&gt;\$7.14&lt;/td&gt;
&lt;td&gt;\$1.45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;td&gt;\$6.50&lt;/td&gt;
&lt;td&gt;\$0.83&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;105&lt;/td&gt;
&lt;td&gt;\$6.00&lt;/td&gt;
&lt;td&gt;\$0.63&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;102&lt;/td&gt;
&lt;td&gt;\$5.99&lt;/td&gt;
&lt;td&gt;\$0.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;79&lt;/td&gt;
&lt;td&gt;\$5.81&lt;/td&gt;
&lt;td&gt;\$0.65&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;\$6.09&lt;/td&gt;
&lt;td&gt;\$0.53&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;96 GB and up&lt;/td&gt;
&lt;td&gt;91&lt;/td&gt;
&lt;td&gt;\$6.91&lt;/td&gt;
&lt;td&gt;\$0.47&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The median barely moves from 4 GB to 64 GB, and at the top of the ladder it goes back up. Meanwhile the cheapest available rate keeps falling. Both facts are true because the volume discount is real inside certain hosts and absent at others, and the ones without it dominate the large-plan population.&lt;/p&gt;

&lt;p&gt;Ranked by how much cheaper a provider's largest plan is per gigabyte than its smallest:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Smallest plan \$/GB&lt;/th&gt;
&lt;th&gt;Largest plan \$/GB&lt;/th&gt;
&lt;th&gt;Discount&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Private Hosting&lt;/td&gt;
&lt;td&gt;\$5.74 (1 GB)&lt;/td&gt;
&lt;td&gt;\$1.44 (64 GB)&lt;/td&gt;
&lt;td&gt;4.0x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HostArmada&lt;/td&gt;
&lt;td&gt;\$3.69 (1 GB)&lt;/td&gt;
&lt;td&gt;\$1.06 (16 GB)&lt;/td&gt;
&lt;td&gt;3.5x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time4VPS&lt;/td&gt;
&lt;td&gt;\$5.10 (0.5 GB)&lt;/td&gt;
&lt;td&gt;\$1.60 (64 GB)&lt;/td&gt;
&lt;td&gt;3.2x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OVHcloud&lt;/td&gt;
&lt;td&gt;\$2.02 (2 GB)&lt;/td&gt;
&lt;td&gt;\$0.74 (96 GB)&lt;/td&gt;
&lt;td&gt;2.7x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contabo&lt;/td&gt;
&lt;td&gt;\$1.26 (4 GB)&lt;/td&gt;
&lt;td&gt;\$0.47 (96 GB)&lt;/td&gt;
&lt;td&gt;2.7x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GoDaddy&lt;/td&gt;
&lt;td&gt;\$4.50 (2 GB)&lt;/td&gt;
&lt;td&gt;\$1.72 (128 GB)&lt;/td&gt;
&lt;td&gt;2.6x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hostinger&lt;/td&gt;
&lt;td&gt;\$1.62 (4 GB)&lt;/td&gt;
&lt;td&gt;\$0.81 (32 GB)&lt;/td&gt;
&lt;td&gt;2.0x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DigitalOcean&lt;/td&gt;
&lt;td&gt;\$8.00 (0.5 GB)&lt;/td&gt;
&lt;td&gt;\$6.19 (384 GB)&lt;/td&gt;
&lt;td&gt;1.3x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;InterServer&lt;/td&gt;
&lt;td&gt;\$1.50 (2 GB)&lt;/td&gt;
&lt;td&gt;\$1.50 (16 GB)&lt;/td&gt;
&lt;td&gt;1.0x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vultr&lt;/td&gt;
&lt;td&gt;\$5.00 (0.5 GB)&lt;/td&gt;
&lt;td&gt;\$5.00 (256 GB)&lt;/td&gt;
&lt;td&gt;1.0x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SiteGround&lt;/td&gt;
&lt;td&gt;\$12.50 (8 GB)&lt;/td&gt;
&lt;td&gt;\$20.00 (20 GB)&lt;/td&gt;
&lt;td&gt;0.6x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kamatera&lt;/td&gt;
&lt;td&gt;\$4.00 (1 GB)&lt;/td&gt;
&lt;td&gt;\$7.88 (8 GB)&lt;/td&gt;
&lt;td&gt;0.5x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fly.io&lt;/td&gt;
&lt;td&gt;\$7.76 (256 MB)&lt;/td&gt;
&lt;td&gt;\$15.50 (32 GB)&lt;/td&gt;
&lt;td&gt;0.5x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Vultr and InterServer sell memory at a perfectly linear rate. Their pricing pages are honest in a way that makes comparison shopping trivial, and it means there is zero reward for over-provisioning.&lt;/p&gt;

&lt;p&gt;The last three rows are the interesting ones. At Kamatera, Fly.io and SiteGround, scaling up costs you &lt;em&gt;more&lt;/em&gt; per gigabyte, not less. Fly.io's Performance tier at \$15.50 per GB against its own \$7.76 shared tier is a dedicated-vCPU premium, which is the honest explanation. It is still a price signal worth reading before you scale a Fly app upward on autopilot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why cheap RAM is cheap
&lt;/h2&gt;

&lt;p&gt;Contabo's \$0.47 and DigitalOcean's \$5.25 are not the same product wearing different price tags. Four things account for most of the gap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CPU allocation.&lt;/strong&gt; Budget hosts oversubscribe cores heavily. Contabo's 96 GB plan comes with 24 shared vCPU on EPYC silicon and you will feel the neighbours under sustained load. Hetzner's CCX line and Vultr's Optimized range give you dedicated cores, which is why their per-GB numbers look terrible. They are not selling you memory. Memory is a side effect of selling you a core.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network.&lt;/strong&gt; Contabo, Netcup and OVHcloud market unlimited or unmetered transfer at consumer speeds. DigitalOcean and Linode meter it precisely and charge overages. Our data shows Hostinger's KVM 4 including 16 TB of transfer while Vultr's 8 GB plans cap at 5 to 6 TB.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Support.&lt;/strong&gt; A \$5 Contabo ticket goes into a queue. LiquidWeb answers in minutes and staffs Linux engineers around the clock. That difference is roughly half the price of a managed plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recovery time when something breaks.&lt;/strong&gt; This one never shows up in a spec table and matters more than the rest combined once you are hosting anything that earns money.&lt;/p&gt;

&lt;p&gt;None of that makes \$12.50 per GB defensible at SiteGround. It does make \$5.25 per GB defensible at DigitalOcean if you use the API, the managed databases and the load balancers that come with it. Choose the tier that matches how you actually operate, then compare inside it: &lt;a href="https://hostingsift.com/compare/contabo-vs-ovhcloud" rel="noopener noreferrer"&gt;Contabo against OVHcloud&lt;/a&gt; for the European budget end, &lt;a href="https://hostingsift.com/compare/digitalocean-vs-hostinger" rel="noopener noreferrer"&gt;DigitalOcean against Hostinger&lt;/a&gt; when you are weighing a developer cloud against a value VPS.&lt;/p&gt;

&lt;h2&gt;
  
  
  These prices barely move
&lt;/h2&gt;

&lt;p&gt;We have been recording VPS prices every night since 12 February 2026, which lets us answer a question nobody else can: how stable is any of this?&lt;/p&gt;

&lt;p&gt;Very. Of the 185 plans in this analysis that we have been reading since mid-February, 165 have shown the same price on every single nightly reading. That is 89% of the sample frozen for six and a half months.&lt;/p&gt;

&lt;p&gt;The stability is concentrated at the top of the market. DigitalOcean has not changed a single price on any of its 90 plans since we started watching. Linode has not moved on 39 plans, AWS on 25, Hostwinds on 40, Cloudways on 60. OVHcloud's entire 41-plan catalogue has held since we picked it up on 1 April 2026.&lt;/p&gt;

&lt;p&gt;The movers are mostly budget and mid-market hosts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hostinger, 3 March 2026.&lt;/strong&gt; KVM 4 went from \$9.99 to \$12.99 and has read \$12.99 on every night since, 133 readings through 30 August. The renewal price moved first, from \$24.99 to \$28.99 on 27 February, which is the pattern we keep seeing: the invoice rises before the storefront does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Netcup, 4 June 2026.&lt;/strong&gt; VPS 8000 G12 went from about \$42 to \$55 in USD terms, roughly 24%, and has held on all 86 readings since.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IONOS, 20 June 2026.&lt;/strong&gt; The old VPS line was retired and replaced with the "+" range on yearly billing. Intro prices fell and renewals rose. VPS L+ has read \$6.00 renewing at \$21.00 on all 74 nights since.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hetzner repriced its cloud range in mid-2026 and it is no longer the cheap default it was for a decade. Our own chart for it splits at 13 August 2026 for a data reason we document on the provider page, so treat the older part of that series as catalogue history rather than a clean nightly series.&lt;/p&gt;

&lt;p&gt;The practical takeaway from all this stillness: a good price today will still be a good price when you get round to migrating. The risk is not that the market moves under you. The risk is your own renewal date.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would actually buy
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Running a side project or a staging box, under \$10 a month.&lt;/strong&gt; &lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt; Cloud VPS 4 at \$5.06 for 8 GB, or &lt;a href="https://hostingsift.com/hosting/ovhcloud" rel="noopener noreferrer"&gt;OVHcloud&lt;/a&gt; VPS-1 at \$6.35 if you want a European provider whose price will not double. Both renew at what they advertise. Skip Time4VPS's \$5.04 here despite it topping the table, because the renewal doubles and 8 GB is not enough headroom to make the migration worth deferring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Production WordPress or a small SaaS, 8 to 16 GB.&lt;/strong&gt; &lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;Netcup&lt;/a&gt; VPS 1000 G12 at \$11.93 flat, or &lt;a href="https://hostingsift.com/hosting/interserver" rel="noopener noreferrer"&gt;InterServer&lt;/a&gt; at \$12.00 flat if you want US datacentres and per-slice scaling. &lt;a href="https://hostingsift.com/hosting/hostinger" rel="noopener noreferrer"&gt;Hostinger&lt;/a&gt; KVM 4 gives you 16 GB for \$12.99, which is the best headroom per dollar in the set, but budget for \$28.99 when the two-year term ends. Worth comparing directly: &lt;a href="https://hostingsift.com/compare/netcup-vs-ovhcloud" rel="noopener noreferrer"&gt;Netcup against OVHcloud&lt;/a&gt; and &lt;a href="https://hostingsift.com/compare/contabo-vs-hostinger" rel="noopener noreferrer"&gt;Contabo against Hostinger&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You want an API, snapshots and managed databases.&lt;/strong&gt; &lt;a href="https://hostingsift.com/hosting/digitalocean" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt; or &lt;a href="https://hostingsift.com/hosting/vultr" rel="noopener noreferrer"&gt;Vultr&lt;/a&gt; at around \$5 per GB. You are paying roughly 8x Contabo's rate for the ecosystem, and for a team shipping weekly that maths usually works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You do not want to touch a server.&lt;/strong&gt; &lt;a href="https://hostingsift.com/hosting/cloudways" rel="noopener noreferrer"&gt;Cloudways&lt;/a&gt; at \$99 for 8 GB. Expensive per gigabyte and correctly priced for what it removes from your week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avoid on the numbers.&lt;/strong&gt; SiteGround's cloud tier at \$12.50 per GB, and any IONOS VPS bought without a calendar reminder for month twelve.&lt;/p&gt;

&lt;p&gt;The full set of plans behind this analysis is browsable on our &lt;a href="https://hostingsift.com/category/vps-hosting" rel="noopener noreferrer"&gt;VPS hosting&lt;/a&gt; and &lt;a href="https://hostingsift.com/category/cloud-hosting" rel="noopener noreferrer"&gt;cloud hosting&lt;/a&gt; pages, with the nightly price history attached to each provider profile. If you are still deciding whether you need any of this, &lt;a href="https://hostingsift.com/blog/when-to-upgrade-from-shared-hosting" rel="noopener noreferrer"&gt;when to upgrade from shared hosting&lt;/a&gt; is the earlier question.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Prices recorded 31 August 2026 from our nightly readings. EUR converted to USD. Monthly-equivalent figures; several budget plans require a 24-month commitment to hit the advertised rate.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://hostingsift.com/blog/vps-price-per-gb-ram-2026" rel="noopener noreferrer"&gt;hostingsift.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vps</category>
      <category>hosting</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
    <item>
      <title>ARM VPS Hosting in 2026: More Cores for Less Money</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Fri, 28 Aug 2026 06:22:53 +0000</pubDate>
      <link>https://dev.to/hostingsift/arm-vps-hosting-in-2026-more-cores-for-less-money-3bc6</link>
      <guid>https://dev.to/hostingsift/arm-vps-hosting-in-2026-more-cores-for-less-money-3bc6</guid>
      <description>&lt;p&gt;&lt;em&gt;Updated 21 September 2026. Both European ARM lines this article recommends are currently unavailable. netcup shows its &lt;a href="https://www.netcup.com/en/server/arm-server" rel="noopener noreferrer"&gt;ARM range as sold out&lt;/a&gt;, and Hetzner's CAX plans are no longer in its price list after &lt;a href="https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/" rel="noopener noreferrer"&gt;its June 2026 repricing&lt;/a&gt;. The netcup ARM prices below are the last ones listed, kept for reference. Until the lines come back, the x86 alternatives in the recommendation section are what you can actually order.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;ARM processors are no longer just the chip in your phone. By 2026 they power a serious chunk of cloud infrastructure, and the most interesting part is that they have reached VPS plans at prices that make classic x86 servers look overpriced. Pick the right provider and you get more cores, lower power draw, and a bill that is dramatically smaller than what the American clouds charge.&lt;/p&gt;

&lt;p&gt;This is a practical look. Real plans, real prices from our &lt;a href="https://hostingsift.com/category/vps-hosting" rel="noopener noreferrer"&gt;VPS hosting database&lt;/a&gt; (current as of June 2026), and an honest answer to when ARM is the better choice and when it still pays to stay on x86.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An ARM VPS is a virtual server running on an ARM chip (usually Ampere Altra) instead of a classic Intel or AMD one.&lt;/li&gt;
&lt;li&gt;The best value in Europe came from &lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;Netcup&lt;/a&gt; and &lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt;, but as of 21 September 2026 neither sells ARM plans. When netcup's ARM plans were on sale, they gave you more cores for less money than its own x86 plans.&lt;/li&gt;
&lt;li&gt;Netcup VPS 1000 ARM: 6 vCPU, 8 GB RAM, 256 GB NVMe for 7.77 EUR per month when available. The equivalent x86 plan, which you can order today, costs 10.37 EUR.&lt;/li&gt;
&lt;li&gt;Against the American clouds the gap is drastic, even on x86. A 4 GB RAM plan at netcup costs 5.91 EUR today, while the same class at AWS Lightsail, Linode and Vultr runs between 20 and 24 USD.&lt;/li&gt;
&lt;li&gt;ARM is excellent for web servers, containers, databases, CI/CD and Go or Node apps. Be more careful with legacy software that only ships x86 binaries.&lt;/li&gt;
&lt;li&gt;ARM chips draw less power per unit of performance, so it is also the greener choice.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What ARM hosting actually is and why it is suddenly everywhere
&lt;/h2&gt;

&lt;p&gt;For years servers were almost entirely x86 from Intel and AMD. ARM was for mobile devices because it sips power. Then Amazon launched Graviton, Ampere shipped Altra chips with dozens of cores, and cloud providers discovered something pleasant: ARM servers deliver comparable performance at lower power draw and a lower cost per core.&lt;/p&gt;

&lt;p&gt;By 2026 that wave has reached the ordinary VPS market. Ampere Altra machines with up to 80 cores are being sliced into virtual plans you can rent for the price of a coffee. The software ecosystem has caught up too. Almost everything important now has an ARM64 build: the Linux distributions, Docker images, Node, Python, Go, PostgreSQL, MySQL, Nginx, Redis. That is exactly what was missing three years ago, and exactly why ARM is now a real option rather than an experiment.&lt;/p&gt;

&lt;h2&gt;
  
  
  ARM vs x86: the real price-per-resource comparison
&lt;/h2&gt;

&lt;p&gt;The best way to feel the difference is to put ARM and x86 plans from the same provider side by side. Here is how it looks at &lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;Netcup&lt;/a&gt;, where the effect is clearest.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Architecture&lt;/th&gt;
&lt;th&gt;vCPU&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;NVMe&lt;/th&gt;
&lt;th&gt;Price/mo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;VPS 1000 ARM G11&lt;/td&gt;
&lt;td&gt;ARM (Ampere)&lt;/td&gt;
&lt;td&gt;6 vCPU&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;256 GB&lt;/td&gt;
&lt;td&gt;7.77 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VPS 1000 G12&lt;/td&gt;
&lt;td&gt;x86&lt;/td&gt;
&lt;td&gt;4 vCPU&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;256 GB&lt;/td&gt;
&lt;td&gt;10.37 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VPS 2000 ARM G11&lt;/td&gt;
&lt;td&gt;ARM (Ampere)&lt;/td&gt;
&lt;td&gt;10 vCPU&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;512 GB&lt;/td&gt;
&lt;td&gt;13.41 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VPS 2000 G12&lt;/td&gt;
&lt;td&gt;x86&lt;/td&gt;
&lt;td&gt;8 vCPU&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;512 GB&lt;/td&gt;
&lt;td&gt;19.25 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;netcup lists these prices including 19% German VAT. The ARM rows show the last listed prices, since the ARM range was sold out on 21 September 2026.&lt;/p&gt;

&lt;p&gt;Read that table again. At every tier the ARM plan has more cores, the same memory, the same disk space, and costs 25 to 30 percent less. This is not a marketing trick, it is a direct consequence of cheaper hardware. ARM cores are smaller and cheaper to manufacture, so the provider can pack more of them into a plan and still sell it for less.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hetzner CAX: the pure Ampere line
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt; brands its ARM plans as CAX. They run on Ampere Altra with shared vCPUs. After Hetzner's June 2026 repricing, the CAX plans are no longer in its price list, so you cannot order them at the moment.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;vCPU&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;NVMe&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CAX11&lt;/td&gt;
&lt;td&gt;2 vCPU&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;40 GB&lt;/td&gt;
&lt;td&gt;Not currently offered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CAX21&lt;/td&gt;
&lt;td&gt;4 vCPU&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;80 GB&lt;/td&gt;
&lt;td&gt;Not currently offered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CAX31&lt;/td&gt;
&lt;td&gt;8 vCPU&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;160 GB&lt;/td&gt;
&lt;td&gt;Not currently offered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CAX41&lt;/td&gt;
&lt;td&gt;16 vCPU&lt;/td&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;320 GB&lt;/td&gt;
&lt;td&gt;Not currently offered&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;When the line was on sale, it undercut Hetzner's own shared x86 plans of the same size. Those x86 plans are now expensive: the CPX42 with 8 vCPU and 16 GB costs €69.49 a month excluding VAT. If Hetzner brings CAX back, our &lt;a href="https://hostingsift.com/trends/hetzner" rel="noopener noreferrer"&gt;Hetzner price history&lt;/a&gt; will show it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Netcup ARM G11: the most cores for the money
&lt;/h3&gt;

&lt;p&gt;If you are chasing the maximum number of cores, Netcup ARM is hard to beat. VPS 8000 ARM gave 18 vCPU, 64 GB RAM and 2 TB NVMe for around 40 EUR per month before the range sold out. That is a resource density that would cost a four-figure bill at the American providers. It is also why Netcup is a favourite among people running databases, self-hosted apps and heavy container stacks.&lt;/p&gt;

&lt;h2&gt;
  
  
  How much cheaper it is than the American clouds
&lt;/h2&gt;

&lt;p&gt;Here the difference stops being percentages and becomes a multiple. We take a 4 GB RAM class and put a European plan you can order today next to the familiar American names we track in our database.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;vCPU&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;Storage&lt;/th&gt;
&lt;th&gt;Price/mo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;netcup&lt;/a&gt; (x86)&lt;/td&gt;
&lt;td&gt;VPS 500 G12&lt;/td&gt;
&lt;td&gt;2 vCPU&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;128 GB NVMe&lt;/td&gt;
&lt;td&gt;5.91 EUR incl. VAT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/vultr" rel="noopener noreferrer"&gt;Vultr&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Cloud Compute 4 GB&lt;/td&gt;
&lt;td&gt;2 vCPU&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;80 GB SSD&lt;/td&gt;
&lt;td&gt;20.00 USD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/aws" rel="noopener noreferrer"&gt;Amazon Lightsail&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;4 GB / 2 vCPU&lt;/td&gt;
&lt;td&gt;2 vCPU&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;80 GB SSD&lt;/td&gt;
&lt;td&gt;24.00 USD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/linode" rel="noopener noreferrer"&gt;Linode&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Shared 4GB&lt;/td&gt;
&lt;td&gt;2 vCPU&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;80 GB SSD&lt;/td&gt;
&lt;td&gt;24.00 USD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/digitalocean" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Basic 4 GB&lt;/td&gt;
&lt;td&gt;2 vCPU&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;80 GB NVMe&lt;/td&gt;
&lt;td&gt;24.00 USD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Note: the European price is in euros, the American ones in dollars. For reference, 24 USD is roughly 21 EUR at September 2026 rates, so the gap stays a multiple.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Same memory class, yet the European bill is roughly three times smaller, and that is on x86. When the ARM plans were on sale, the gap was wider still. Part of the difference comes from European budget providers being more aggressive on price than the hyperscalers, not only from the architecture. But the architecture helps. Among the American providers, AWS now offers its own ARM chips (Graviton), which are usually 10 to 20 percent cheaper than the x86 equivalent, confirming the same trend.&lt;/p&gt;

&lt;p&gt;Before you fall in love with the lowest price, run your real scenario through our &lt;a href="https://hostingsift.com/tools/true-cost-calculator" rel="noopener noreferrer"&gt;true cost calculator&lt;/a&gt;. The monthly price is one thing, but traffic, backups and add-on services change the picture.&lt;/p&gt;

&lt;h2&gt;
  
  
  What ARM is great for and what it is not
&lt;/h2&gt;

&lt;p&gt;ARM is not a universal replacement. It shines on some workloads and creates headaches on others. Here is the honest breakdown.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where ARM works brilliantly
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Web servers and APIs.&lt;/strong&gt; Nginx, Caddy, Node, Go, PHP, Python. All of these have mature ARM64 builds and run with no noticeable difference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Containers.&lt;/strong&gt; Docker and Kubernetes have supported ARM64 for a long time. Most popular images are multi-arch, so they pull the right version automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Databases.&lt;/strong&gt; PostgreSQL, MySQL, MariaDB and Redis run great on ARM, and the high core counts at Netcup help with parallel queries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD and build machines.&lt;/strong&gt; More cores per euro means faster builds, especially for Go and Rust projects that use every core.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosted apps.&lt;/strong&gt; Nextcloud, Gitea, n8n, Vaultwarden and the like have official ARM images.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Where x86 is still worth it
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Legacy software with x86-only binaries.&lt;/strong&gt; Some closed corporate apps, old plugins or specific drivers have no ARM build. Check before you migrate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Software with heavy x86 assembly optimizations.&lt;/strong&gt; Rare cases, but they exist. Test performance, do not assume anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When your team has no time to test.&lt;/strong&gt; If your stack has been x86 for years and everything works, the migration is a time cost you have to justify with real savings.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Energy efficiency and the green angle
&lt;/h2&gt;

&lt;p&gt;ARM chips are designed to deliver maximum performance per watt. That started as a phone-battery advantage, but in the data center it turns into less power burned for the same work. Less power means a lower carbon footprint per request and lower operating costs, part of which comes back to you as a cheaper plan.&lt;/p&gt;

&lt;p&gt;If sustainability is a factor in your choice, ARM hosting fits naturally. It is not a marketing sticker, it is a consequence of the architecture. Combine an ARM server with a provider that uses renewable energy and you get a serious cut in footprint without compromising performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to migrate to ARM without pain
&lt;/h2&gt;

&lt;p&gt;The transition is easier than most people expect, as long as you approach it methodically.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Inventory your stack.&lt;/strong&gt; List every piece of software you run. For each one, check whether an ARM64 build exists. For mainstream things the answer is almost always yes.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Use multi-arch Docker images.&lt;/strong&gt; If you are already on containers, most official images are multi-arch and the move is nearly seamless. You just run the stack on an ARM host.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Test on a cheap plan first.&lt;/strong&gt; Grab the smallest ARM plan you can find, deploy the app and run a load test. The cost of the experiment is symbolic. With both European ARM lines sold out as of 21 September 2026, an hourly-billed ARM instance from a larger cloud is the quickest way to test in the meantime.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Compare real performance.&lt;/strong&gt; Do not look only at benchmarks. Measure response time and throughput of your own application under real load.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Migrate gradually.&lt;/strong&gt; Move the non-critical services first. Once you are convinced, move production too.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you are also considering self-hosting AI models on a budget server, read our guide to &lt;a href="https://hostingsift.com/blog/self-hosted-llm-5-dollar-vps-2026" rel="noopener noreferrer"&gt;running local LLMs on a VPS under 5 dollars&lt;/a&gt;. Many of the same ARM considerations apply there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our recommendation
&lt;/h2&gt;

&lt;p&gt;For most people who want the best value from an ARM VPS in 2026, the choice comes down to two providers. As of 21 September 2026, neither can sell you one: netcup's ARM range is sold out and Hetzner's CAX line is missing from its price list. In the meantime, netcup's x86 VPS 1000 G12, with 4 vCPU, 8 GB and 256 GB NVMe for €10.37 including VAT on a 12-month term, is the closest thing you can buy.&lt;/p&gt;

&lt;p&gt;Pick &lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;Netcup&lt;/a&gt; if you are chasing the maximum number of cores and disk space for your money. When available, their ARM plans literally beat their own x86 plans on value, and the higher tiers offer a resource density that is hard to match in Europe.&lt;/p&gt;

&lt;p&gt;Pick &lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt; if you value a clean interface, hourly billing and a mature cloud ecosystem with snapshots, networks and load balancers. When it returns, the CAX line is ideal for container workloads.&lt;/p&gt;

&lt;p&gt;And if you are tied to an American cloud because of a specific region or integration, check whether your provider offers ARM instances and compare them with the x86 equivalent. You will almost always save something. For the full picture, browse our &lt;a href="https://hostingsift.com/category/cloud-hosting" rel="noopener noreferrer"&gt;cloud hosting&lt;/a&gt; and &lt;a href="https://hostingsift.com/category/vps-hosting" rel="noopener noreferrer"&gt;VPS&lt;/a&gt; categories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is an ARM VPS slower than x86?
&lt;/h3&gt;

&lt;p&gt;Not in any way you will notice on a typical web or application workload. A single ARM core on Ampere Altra is comparable to an x86 core for most tasks, and because you get more cores for the same money, total performance is often higher. Exceptions exist for very specific single-thread or x86-optimized workloads.&lt;/p&gt;

&lt;h3&gt;
  
  
  Will WordPress run on ARM hosting?
&lt;/h3&gt;

&lt;p&gt;Yes, completely. PHP, MySQL or MariaDB, Nginx and Redis all have ARM builds. WordPress does not even know what architecture it runs on. This holds for most popular plugins too, because they are PHP rather than compiled binaries.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I run Docker on an ARM VPS?
&lt;/h3&gt;

&lt;p&gt;Yes. Docker has supported ARM64 for years. Most official images are multi-arch and automatically pull the right version. If you build your own images, just make sure the base image has an ARM64 variant.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is European ARM so much cheaper than the American clouds?
&lt;/h3&gt;

&lt;p&gt;Two reasons combine. First, European budget providers like netcup are generally more aggressive on price than the hyperscalers. Second, ARM hardware is cheaper per unit of performance, so they put more cores in a plan and still sell it for less.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who is an ARM VPS not right for?
&lt;/h3&gt;

&lt;p&gt;Teams that depend on closed software with x86-only binaries, or who have no resources to test the migration. If your stack is fully open and containerized, the benefits almost always win.&lt;/p&gt;

&lt;p&gt;The takeaway for 2026 is simple. ARM is no longer an experiment but a mature, cheaper way to run almost any modern web application. Start with a plan for a few euros, run a real test, and see whether your bill has any reason to stay this high.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://hostingsift.com/blog/arm-vps-hosting-2026" rel="noopener noreferrer"&gt;hostingsift.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>arm</category>
      <category>vps</category>
      <category>hosting</category>
      <category>performance</category>
    </item>
    <item>
      <title>MCP Server Hosting: Where to Actually Deploy in 2026</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Fri, 21 Aug 2026 15:42:03 +0000</pubDate>
      <link>https://dev.to/hostingsift/mcp-server-hosting-where-to-actually-deploy-in-2026-279e</link>
      <guid>https://dev.to/hostingsift/mcp-server-hosting-where-to-actually-deploy-in-2026-279e</guid>
      <description>&lt;p&gt;&lt;em&gt;Updated 21 September 2026. The VPS prices and platform limits below were re-checked against our database and the providers' own pages on that date. Hetzner's budget CX and CAX plans are no longer sold after &lt;a href="https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/" rel="noopener noreferrer"&gt;its June 2026 repricing&lt;/a&gt;, and &lt;a href="https://vercel.com/docs/functions/configuring-functions/duration" rel="noopener noreferrer"&gt;Vercel's function limits&lt;/a&gt; are much longer than the 10 seconds this article first quoted.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Model Context Protocol went from "Anthropic curiosity" to "thing every AI tooling vendor implements" in roughly twelve months. If you build agentic apps in 2026, you almost certainly need to host an MCP server somewhere. The official docs cover the protocol. They do not cover the boring infrastructure question: where does this thing actually run, and what does it cost?&lt;/p&gt;

&lt;p&gt;This guide answers that. We will look at the three deployment modes (stdio, HTTP, SSE), the security gotchas that bite teams in production, and the actual hosting price points for running MCP servers at scale. Real plans, real numbers from providers in our database.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an MCP server is, in one paragraph
&lt;/h2&gt;

&lt;p&gt;Model Context Protocol is an open standard from Anthropic that lets LLM applications connect to external tools and data sources through a unified interface. An MCP server exposes resources (files, database rows, API endpoints) and tools (functions the model can call) to any compatible client. Claude Desktop, Cursor, VS Code Copilot, and dozens of agent frameworks all speak MCP now. Build one server, plug into all of them.&lt;/p&gt;

&lt;p&gt;The protocol itself is JSON-RPC 2.0 over a transport layer. That transport is where hosting decisions start mattering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three transport modes, three hosting profiles
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Stdio (local only)
&lt;/h3&gt;

&lt;p&gt;The server runs as a subprocess of the client. The client spawns your binary, talks to it over stdin/stdout, kills it on exit. Zero network surface. Zero hosting needed.&lt;/p&gt;

&lt;p&gt;This is how every Claude Desktop config you have ever seen works. &lt;code&gt;command: "node"&lt;/code&gt;, &lt;code&gt;args: ["./my-server.js"]&lt;/code&gt;, done. Great for personal tools, code that runs against your local filesystem, anything you do not want exposed to the internet.&lt;/p&gt;

&lt;p&gt;Hosting cost: zero. You are the host.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. HTTP with Server-Sent Events (SSE)
&lt;/h3&gt;

&lt;p&gt;The original networked transport. Server runs as a long-lived HTTP service. Clients connect, hold an SSE stream open, send requests over POST. This is the mode most public MCP servers use today.&lt;/p&gt;

&lt;p&gt;Hosting requirements: a process that stays running, a public URL with TLS, and a host that does not kill long-lived connections. That last one matters more than people realize. Serverless platforms with hard duration caps will close the SSE stream when the cap hits. On Vercel that is 5 minutes on Hobby and 800 seconds on Pro. For a session meant to stay open for hours, that is game over.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Streamable HTTP (the 2025 spec update)
&lt;/h3&gt;

&lt;p&gt;Anthropic merged SSE and POST into one bidirectional endpoint. Stateless mode is possible. Each request is a self-contained exchange. This unlocks serverless and edge deployments because you no longer need a persistent connection.&lt;/p&gt;

&lt;p&gt;Stateless streamable HTTP is the mode you want if your server does not need session memory. Stateful mode still requires a sticky backend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Picking the right host
&lt;/h2&gt;

&lt;p&gt;The decision tree:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stateless streamable HTTP, low traffic:&lt;/strong&gt; serverless or PaaS. Cheapest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateful SSE, persistent connections:&lt;/strong&gt; VPS or container platform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High traffic, autoscaling:&lt;/strong&gt; managed container service or Kubernetes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internal-only, behind VPN:&lt;/strong&gt; any VPS with a private network.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most teams overestimate which bucket they fall into. If your MCP server fronts a small API and gets a few hundred requests per day, you do not need Kubernetes. A 5 EUR VPS is fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Self-hosted on a VPS: the realistic baseline
&lt;/h2&gt;

&lt;p&gt;This is what most production MCP servers actually run on. A small VPS, Node or Python process behind a reverse proxy, systemd keeping it alive. Total cost: under 10 EUR per month.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;vCPU / RAM&lt;/th&gt;
&lt;th&gt;Storage&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Cloud VPS 4&lt;/td&gt;
&lt;td&gt;4 / 8 GB&lt;/td&gt;
&lt;td&gt;100 GB SSD&lt;/td&gt;
&lt;td&gt;€4.40/mo excl. VAT, 24-month term&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;netcup&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;VPS 500 G12&lt;/td&gt;
&lt;td&gt;2 / 4 GB&lt;/td&gt;
&lt;td&gt;128 GB NVMe&lt;/td&gt;
&lt;td&gt;€5.91/mo incl. VAT, 12-month term&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;CPX22&lt;/td&gt;
&lt;td&gt;2 / 4 GB&lt;/td&gt;
&lt;td&gt;80 GB NVMe&lt;/td&gt;
&lt;td&gt;€19.49/mo excl. VAT, hourly billing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/digitalocean" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Basic Regular 1 GB&lt;/td&gt;
&lt;td&gt;1 / 1 GB&lt;/td&gt;
&lt;td&gt;25 GB SSD&lt;/td&gt;
&lt;td&gt;$6/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/vultr" rel="noopener noreferrer"&gt;Vultr&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Regular Cloud Compute&lt;/td&gt;
&lt;td&gt;1 / 1 GB&lt;/td&gt;
&lt;td&gt;25 GB SSD&lt;/td&gt;
&lt;td&gt;$5/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/linode" rel="noopener noreferrer"&gt;Linode&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Shared Nanode&lt;/td&gt;
&lt;td&gt;1 / 1 GB&lt;/td&gt;
&lt;td&gt;25 GB SSD&lt;/td&gt;
&lt;td&gt;$5/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The netcup VPS 500 G12 at €5.91 including VAT is the value pick now that Hetzner's budget CX line is gone. Two vCPUs and 4 GB RAM for the price of a coffee. It handles MCP servers with hundreds of concurrent SSE connections without breaking a sweat.&lt;/p&gt;

&lt;p&gt;For pure value, Contabo Cloud VPS 4 at €4.40 excluding VAT gives you 4 vCPU and 8 GB RAM, but the I/O is slower and latency varies. Fine for a hobby MCP server. Not what you want for production.&lt;/p&gt;

&lt;p&gt;If you are running multiple MCP servers and need elbow room, netcup's RS 1000 G12 with 4 dedicated AMD EPYC cores and 8 GB RAM at €12.79 including VAT is the sweet spot, on a 12-month minimum term. Hetzner's CCX13 with 2 dedicated vCPUs and 8 GB, the old default here, now costs €42.99 excluding VAT.&lt;/p&gt;

&lt;h3&gt;
  
  
  The setup, briefly
&lt;/h3&gt;

&lt;p&gt;Provision the VPS. Install Node or Python. Clone your MCP server repo. Wrap the process in systemd (or PM2 if you prefer). Put Caddy or nginx in front for TLS. Open port 443. Done.&lt;/p&gt;

&lt;p&gt;Anthropic publishes a TypeScript SDK and a Python SDK. Both have starter templates. Most teams have their first MCP server live in under an hour.&lt;/p&gt;

&lt;h2&gt;
  
  
  PaaS deployment: less work, slightly more money
&lt;/h2&gt;

&lt;p&gt;If you do not want to think about systemd or TLS certs, Railway and Render handle the plumbing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hostingsift.com/hosting/railway" rel="noopener noreferrer"&gt;Railway&lt;/a&gt; charges per resource used. A small MCP server with 512 MB RAM and minimal CPU lands around $5 to $8 per month including bandwidth. You push from GitHub, Railway builds and deploys. SSE works out of the box because Railway runs your container long-lived.&lt;/p&gt;

&lt;p&gt;Render's Web Service plans start at $7 per month for 512 MB RAM, $25 for 2 GB. Render also handles SSE and WebSockets correctly. Their free tier spins down after inactivity, which kills MCP servers, so do not use it for anything serious.&lt;/p&gt;

&lt;p&gt;The tradeoff is honest: PaaS costs roughly 2x what a budget VPS costs for equivalent resources, and you trade that money for zero ops work. Worth it for small teams without an ops person.&lt;/p&gt;

&lt;p&gt;For deeper PaaS analysis, see our &lt;a href="https://hostingsift.com/blog/paas-hosting-railway-render-new-hosting" rel="noopener noreferrer"&gt;PaaS hosting comparison&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Serverless: cheap and fast, with caveats
&lt;/h2&gt;

&lt;p&gt;Streamable HTTP in stateless mode opens the door to truly serverless MCP servers. Cloudflare Workers, AWS Lambda, Vercel Functions can all host an MCP endpoint as long as each request is self-contained.&lt;/p&gt;

&lt;p&gt;Cloudflare Workers is probably the best fit. Global edge, zero cold starts under typical load, $5 per month for 10 million requests on the paid tier. Their &lt;code&gt;nodejs_compat&lt;/code&gt; flag handles the Anthropic SDK reasonably well.&lt;/p&gt;

&lt;p&gt;Watch out for these limits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request timeout: Workers is 30 seconds CPU time, Lambda is 15 minutes max, Vercel is 5 minutes on Hobby and 800 seconds on Pro.&lt;/li&gt;
&lt;li&gt;Response size: Workers caps at 100 MB streamed, Lambda at 6 MB synchronous.&lt;/li&gt;
&lt;li&gt;Cold starts: relevant if your MCP server hits cold instances often. Workers wins here.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your MCP server wraps a slow external API and individual tool calls might take 45 seconds, serverless is wrong. Use a VPS.&lt;/p&gt;

&lt;p&gt;If your MCP server is a thin wrapper around a fast database query, serverless is perfect and you might never spend more than a few dollars per month.&lt;/p&gt;

&lt;h2&gt;
  
  
  The security part nobody likes talking about
&lt;/h2&gt;

&lt;p&gt;An MCP server is a remote code execution surface for whoever talks to it. The LLM client calls tools on your server. Those tools execute code. If you expose that endpoint to the public internet without auth, you are running an open execution endpoint.&lt;/p&gt;

&lt;p&gt;Here is what teams keep getting wrong:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. No authentication on the MCP endpoint
&lt;/h3&gt;

&lt;p&gt;The MCP spec supports OAuth 2.1 for HTTP transports. Use it. Anthropic added OAuth flows to the spec in 2025 specifically because too many public MCP servers shipped without auth.&lt;/p&gt;

&lt;p&gt;If OAuth is too much for your use case, at minimum require a bearer token in the Authorization header and validate it on every request. Hardcoded API keys in env vars work fine for B2B MCP servers used by a single client team.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Tools that take filesystem paths
&lt;/h3&gt;

&lt;p&gt;An MCP tool called &lt;code&gt;read_file(path)&lt;/code&gt; that does no path validation is a path traversal exploit waiting to happen. The LLM will eventually try &lt;code&gt;../../../etc/passwd&lt;/code&gt; because the user asked it to debug something. Validate. Sandbox. Use chroot or container isolation for anything filesystem-related.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Database tools with no row-level filtering
&lt;/h3&gt;

&lt;p&gt;If your MCP server exposes a &lt;code&gt;query_users()&lt;/code&gt; tool, the LLM client speaks for whoever invoked it. Pass user identity through the protocol context and apply row-level security at the database. Otherwise tenant A can ask their AI for tenant B's data through your MCP server, and your AI will happily oblige.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Rate limiting
&lt;/h3&gt;

&lt;p&gt;LLMs in agent loops can hammer an endpoint. A buggy agent we saw last quarter called the same MCP tool 4,000 times in two minutes before timing out. Without rate limiting that becomes your AWS bill. Caddy and Cloudflare both do this cheaply.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-world architecture: MCP server in front of a SaaS API
&lt;/h2&gt;

&lt;p&gt;The most common production pattern in 2026 looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Your existing SaaS has a REST API.&lt;/li&gt;
&lt;li&gt; You write an MCP server that wraps the REST API in tool definitions.&lt;/li&gt;
&lt;li&gt; The MCP server runs on a small VPS or Railway service.&lt;/li&gt;
&lt;li&gt; OAuth flow issues per-customer tokens.&lt;/li&gt;
&lt;li&gt; Claude/Cursor/your-agent-of-choice connects to the MCP server using those tokens.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This unlocks AI integration without forcing your customers to integrate with twenty different agent frameworks. You build one MCP server. Everything else just works.&lt;/p&gt;

&lt;p&gt;For a B2B SaaS doing 50,000 tool calls per day, this entire setup runs comfortably on a €5.91 netcup VPS 500 G12 with Caddy fronting the Node process. Total monthly bill: under 10 EUR including bandwidth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where MCP server hosting is going
&lt;/h2&gt;

&lt;p&gt;Two trends to watch in 2026:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP marketplaces.&lt;/strong&gt; Anthropic, Glama, and Smithery are building registries where third parties publish hosted MCP servers. You will not always host your own. You will sometimes use a hosted MCP server the way you use a third-party API today. Pricing models there are still shaking out, mostly per-call or per-seat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP-native hosting platforms.&lt;/strong&gt; A handful of providers are building dedicated MCP hosting products: deploy your server with one command, get OAuth and rate limiting included, pay per request. Expect this category to consolidate quickly. By 2027 we will probably have two or three dominant players the same way Vercel won Next.js hosting.&lt;/p&gt;

&lt;p&gt;For now, a VPS plus a half-day of setup gets you a production MCP server cheaper than any managed alternative.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 30-second recommendation
&lt;/h2&gt;

&lt;p&gt;Building your first MCP server for testing? Stdio mode, local machine. No hosting.&lt;/p&gt;

&lt;p&gt;Shipping an MCP server to a customer or to the public? A netcup VPS 500 G12 at €5.91 plus Caddy plus systemd. You will spend an hour setting up. The thing will run for years.&lt;/p&gt;

&lt;p&gt;Already on a PaaS for your main app? Add the MCP server to the same project on Railway or Render. Your bill goes up by maybe $5 per month.&lt;/p&gt;

&lt;p&gt;Want zero ops and very low traffic? Stateless streamable HTTP on Cloudflare Workers. Free tier handles a surprising amount.&lt;/p&gt;

&lt;p&gt;The hosting decision matters less than the security one. Auth your endpoint, validate your tool inputs, rate-limit your server. Then ship.&lt;/p&gt;




&lt;p&gt;Originally published at &lt;a href="https://hostingsift.com/blog/mcp-server-hosting-guide-2026" rel="noopener noreferrer"&gt;hostingsift.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>hosting</category>
      <category>security</category>
      <category>devops</category>
    </item>
    <item>
      <title>Self-Hosted LLM on a $5 VPS in 2026: What Actually Works</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Wed, 12 Aug 2026 05:05:12 +0000</pubDate>
      <link>https://dev.to/hostingsift/self-hosted-llm-on-a-5-vps-in-2026-what-actually-works-5d83</link>
      <guid>https://dev.to/hostingsift/self-hosted-llm-on-a-5-vps-in-2026-what-actually-works-5d83</guid>
      <description>&lt;p&gt;"Run your own ChatGPT for five bucks a month" sounds like cheap clickbait. And mostly it is. But the gap between clickbait and reality has narrowed a lot in 2026. Quantized 3B and 7B models have become genuinely useful. VPS providers now pack 8 GB of RAM into plans under $6. If you pick carefully, you can run a respectable local model on a budget server.&lt;/p&gt;

&lt;p&gt;This article is about what actually works, what falls over, and which provider from our &lt;a href="https://hostingsift.com/hosting" rel="noopener noreferrer"&gt;hosting comparison&lt;/a&gt; gives you the most compute per dollar for AI workloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You will not run GPT-4-class models on a $5 VPS. Stop expecting to.&lt;/li&gt;
&lt;li&gt;You &lt;em&gt;can&lt;/em&gt; run Llama 3.2-3B, Qwen 2.5-7B, or Mistral-7B in 4-bit quantization if you have at least 8 GB of RAM.&lt;/li&gt;
&lt;li&gt;CPU inference is slow (5 to 15 tokens per second) but usable for personal automation, chatbots with low traffic, or embedding generation.&lt;/li&gt;
&lt;li&gt;The providers that matter for this use case: &lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt; and &lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;Netcup&lt;/a&gt;, both German-speaking and both useful for EU data residency. &lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt; has pulled its entire budget line from sale, so its entry point here is now €35.49 rather than €8.49.&lt;/li&gt;
&lt;li&gt;Avoid US hyperscaler $5 plans (DO, Vultr, Linode) for LLM work. Same price, one quarter of the RAM.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why self-host an LLM at all?
&lt;/h2&gt;

&lt;p&gt;Three reasons keep coming up in our research:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy.&lt;/strong&gt; 44% of organizations cite data privacy as the top barrier to adopting hosted LLM APIs. Self-hosting means your prompts, documents, and customer data never leave your box. For law firms, clinics, and anyone building internal knowledge bases, this is non-negotiable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost at volume.&lt;/strong&gt; Hosted API costs add up fast once you run batch jobs, background summarization, or embedding pipelines. The rough break-even with a $5 VPS sits around two million tokens per day for small models. Below that, APIs are cheaper. Above that, self-hosting starts to win.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning and control.&lt;/strong&gt; You get to pick the model, tune the system prompt at the weight level (via LoRA adapters), and run without rate limits. Worth it for developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "self-hosted LLM" actually needs
&lt;/h2&gt;

&lt;p&gt;Before we compare VPS plans, a quick hardware reality check. On CPU-only servers (which every budget VPS is), the bottleneck is RAM bandwidth, not CPU speed. Model weights must fit in RAM, and every token generation pass reads the entire weight file. So the two numbers that matter are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;RAM size.&lt;/strong&gt; Determines which model you can load at all.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;RAM bandwidth.&lt;/strong&gt; Determines how many tokens per second you get.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is roughly what each tier can do in 4-bit quantization (GGUF format, llama.cpp inference):&lt;/p&gt;

&lt;p&gt;&lt;em&gt;**Update (21 September 2026).&lt;/em&gt;* netcup's ARM line, which this article recommended for tokens per euro, is &lt;a href="https://www.netcup.com/en/server/arm-server" rel="noopener noreferrer"&gt;sold out on netcup's site&lt;/a&gt;. It has been replaced below with netcup's x86 VPS 1000 G12, which you can order today. Hetzner's CX and CAX plans are now missing from its price list altogether. All prices were re-checked on 21 September 2026.*&lt;/p&gt;

&lt;p&gt;&lt;em&gt;**Update (12 August 2026) — corrections.&lt;/em&gt;* A data audit found two errors in the earlier version of this article, and we would rather say so plainly than quietly swap the numbers.*&lt;/p&gt;

&lt;p&gt;&lt;em&gt;**Hetzner's entire budget line is no longer sold.&lt;/em&gt;* The CX23/33/43/53 and CAX11/21/31/41 plans are marked "not available" on Hetzner's own site, in every location. Their listed prices are still accurate, which is exactly why our checks missed it — we were tracking price, not stock. The cheapest Hetzner plan you can actually buy with 8 GB of RAM is now the CPX32 at €35.49, roughly four times the €8.49 CX33 this article originally recommended. That single fact changes the shape of this comparison, so the Hetzner section below has been rewritten rather than repriced.*&lt;/p&gt;

&lt;p&gt;&lt;em&gt;**Our Contabo prices were wrong, and the catalogue was stale.&lt;/em&gt;* The Contabo plans quoted earlier — Cloud VPS 10 at €3.60 and Cloud VPS 20 at €5.60 — no longer exist. Contabo replaced that line with Cloud VPS 4 through 18 (the number is the vCPU count) and our scraper had been serving cached figures rather than reading the live site, understating some prices by up to 38%. Everything below is now read from Contabo's live pricing page.*&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Netcup's VPS 1000 ARM G11 did move honestly, from €6.26 to €7.77. The full change history for all three is on our &lt;a href="https://hostingsift.com/trends/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt;, &lt;a href="https://hostingsift.com/trends/netcup" rel="noopener noreferrer"&gt;Netcup&lt;/a&gt; and &lt;a href="https://hostingsift.com/trends/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt; price history pages.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;Largest usable model&lt;/th&gt;
&lt;th&gt;Realistic tokens/sec (CPU)&lt;/th&gt;
&lt;th&gt;Good for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;Qwen 2.5-0.5B, Llama 3.2-1B&lt;/td&gt;
&lt;td&gt;20-40 tok/s&lt;/td&gt;
&lt;td&gt;Embeddings, simple classification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;Llama 3.2-3B, Phi-3.5 Mini&lt;/td&gt;
&lt;td&gt;8-15 tok/s&lt;/td&gt;
&lt;td&gt;Personal chatbots, summarization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;Qwen 2.5-7B, Mistral-7B, Llama 3.1-8B&lt;/td&gt;
&lt;td&gt;4-8 tok/s&lt;/td&gt;
&lt;td&gt;Production-adjacent use, RAG&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;Mixtral 8x7B (barely), Qwen 2.5-14B&lt;/td&gt;
&lt;td&gt;2-4 tok/s&lt;/td&gt;
&lt;td&gt;More complex reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Below 8 GB you are limited to small models. Above 8 GB you unlock the "actually useful" tier. This matters enormously when picking a VPS.&lt;/p&gt;

&lt;h2&gt;
  
  
  The $3 to $6 VPS plans that can run real LLMs
&lt;/h2&gt;

&lt;p&gt;Pulled directly from our database, filtered to plans where the RAM is at least 8 GB (the practical floor for running a 7B model in 4-bit quantization) &lt;em&gt;and&lt;/em&gt; that the provider will actually sell you today. The first price is the 24-month rate; the figure in brackets is what you pay month-to-month with no commitment.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price / mo&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;vCPU&lt;/th&gt;
&lt;th&gt;Storage&lt;/th&gt;
&lt;th&gt;Bandwidth&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Cloud VPS 4&lt;/td&gt;
&lt;td&gt;€4.40 (€5.50)&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;4 vCPU&lt;/td&gt;
&lt;td&gt;100 GB SSD&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Cloud VPS 6&lt;/td&gt;
&lt;td&gt;€6.00 (€7.50)&lt;/td&gt;
&lt;td&gt;12 GB&lt;/td&gt;
&lt;td&gt;6 vCPU&lt;/td&gt;
&lt;td&gt;200 GB SSD&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;netcup&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;VPS 1000 G12&lt;/td&gt;
&lt;td&gt;€10.37 (12-month term)&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;4 vCPU&lt;/td&gt;
&lt;td&gt;256 GB NVMe&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Cloud VPS Plus 4&lt;/td&gt;
&lt;td&gt;€10.80 (€13.50)&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;4 vCPU (AMD EPYC)&lt;/td&gt;
&lt;td&gt;150 GB NVMe&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;CPX32&lt;/td&gt;
&lt;td&gt;€35.49&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;4 vCPU&lt;/td&gt;
&lt;td&gt;160 GB NVMe&lt;/td&gt;
&lt;td&gt;20 TB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Contabo and Hetzner list prices before VAT. netcup's price includes 19% German VAT.&lt;/p&gt;

&lt;p&gt;Compare that to the "famous" $5 cloud plans:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price / mo&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;vCPU&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/digitalocean" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Basic Regular&lt;/td&gt;
&lt;td&gt;$4.00&lt;/td&gt;
&lt;td&gt;512 MiB&lt;/td&gt;
&lt;td&gt;1 vCPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/vultr" rel="noopener noreferrer"&gt;Vultr&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;CC Regular&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;512 MB&lt;/td&gt;
&lt;td&gt;1 vCPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hostingsift.com/hosting/linode" rel="noopener noreferrer"&gt;Linode&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Shared Nanode&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;td&gt;1 GB&lt;/td&gt;
&lt;td&gt;1 vCPU&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That 8x RAM difference at the same price point is the whole reason European providers win this category. DO, Vultr and Linode are excellent for web apps and small services. They are not designed for the RAM-heavy workload an LLM needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Provider deep dive
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Contabo: the price-per-GB winner
&lt;/h3&gt;

&lt;p&gt;Contabo Cloud VPS 4 gives you 8 GB RAM, 4 vCPU and 100 GB SSD for €4.40 a month on a two-year term, or €5.50 with no commitment. Nothing else in this comparison matches that. The catch is real: Contabo is known for inconsistent CPU steal on noisy neighbours, and network latency can be variable. For LLM inference, which is RAM-bound rather than network-bound, that tradeoff is usually acceptable.&lt;/p&gt;

&lt;p&gt;Go up one tier to Cloud VPS 6 at €6.00 (€7.50 monthly) for 12 GB RAM and 6 vCPU. This is the sweet spot for running Qwen 2.5-14B in 4-bit while still having headroom for a web server and a small vector database on the same machine.&lt;/p&gt;

&lt;p&gt;One note on storage, since it changed with the new line: the standard Cloud VPS tiers ship SSD, not NVMe. If disk speed matters to you — loading an 8 GB model off disk on every restart, for instance — Cloud VPS Plus 4 at €10.80 keeps the same 8 GB of RAM but moves you to 150 GB of NVMe on AMD EPYC cores.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hetzner: no longer competing at this price
&lt;/h3&gt;

&lt;p&gt;Hetzner used to be the obvious quality pick here, and this article said so. That is no longer true, for a reason that has nothing to do with price: the whole cost-optimised line — CX23 through CX53 and CAX11 through CAX41 — is marked "not available" on Hetzner's site, in every location. The prices are still published, which is what fooled our tracker for a month, but you cannot buy the machines.&lt;/p&gt;

&lt;p&gt;What remains purchasable with 8 GB of RAM starts at the CPX32, €35.49 a month. It is a genuinely good server — AMD EPYC cores, 160 GB NVMe, 20 TB of bandwidth, datacentres in Germany, Finland and Virginia, and a control panel that is minimal in the good way. It is simply in a different price bracket, four times the CX33 it replaces, and it is hard to justify for a hobby inference box when Contabo sells 8 GB for €4.40.&lt;/p&gt;

&lt;p&gt;The loss worth mourning is the ARM line. The CAX21's Ampere Altra cores benchmarked roughly 15 to 25 percent faster than the x86 CX33 on llama.cpp thanks to higher sustained memory bandwidth, which made it the best tokens-per-euro option in this whole comparison. If Hetzner brings that line back, it goes straight back into this table — our &lt;a href="https://hostingsift.com/trends/hetzner" rel="noopener noreferrer"&gt;Hetzner price history page&lt;/a&gt; tracks it nightly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Netcup: the quiet competitor
&lt;/h3&gt;

&lt;p&gt;Less known outside the German-speaking market. Its ARM line, the VPS 1000 ARM G11 with 6 vCPU and 8 GB at €7.77, was the pick here until netcup marked the whole ARM range sold out. The x86 VPS 1000 G12 is the plan you can buy today: 4 vCPU, 8 GB of DDR5 and 256 GB of NVMe for €10.37 a month including VAT on a 12-month term. That is still the largest disk in this comparison. Useful if you want to store multiple models and switch between them without re-downloading 4 to 8 GB each time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you will actually run on 8 GB
&lt;/h2&gt;

&lt;p&gt;Here is the honest menu for an 8 GB VPS with Ollama or llama.cpp:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Qwen 2.5-7B-Instruct (Q4_K_M)&lt;/strong&gt;. Best general-purpose model in this size. Strong reasoning, multi-language, clean code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Llama 3.1-8B-Instruct (Q4_K_M)&lt;/strong&gt;. Ubiquitous, well-supported, safe default. Slightly weaker than Qwen on code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mistral-7B-Instruct-v0.3 (Q5_K_M)&lt;/strong&gt;. Older but predictable. Good for summarization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phi-3.5-Mini (Q6_K)&lt;/strong&gt;. Smaller (3.8B), fits in 4 GB of RAM, quick for chat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;nomic-embed-text or bge-small-en&lt;/strong&gt;. Embedding models for RAG pipelines. Run these alongside the main model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What you will &lt;em&gt;not&lt;/em&gt; run well: anything 14B+, models with vision capabilities (qwen-vl, llava), or anything demanding low-latency streaming to many users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical setup in 15 minutes
&lt;/h2&gt;

&lt;p&gt;Rough sketch so you know what you are signing up for. This assumes Ubuntu 22.04 or 24.04 on a 8 GB VPS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Install Ollama (handles download, quantization, serving)&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ollama.com/install.sh | sh

&lt;span class="c"&gt;# 2. Pull a model&lt;/span&gt;
ollama pull qwen2.5:7b-instruct-q4_K_M

&lt;span class="c"&gt;# 3. Test&lt;/span&gt;
ollama run qwen2.5:7b-instruct-q4_K_M &lt;span class="s2"&gt;"Summarize the French Revolution in two paragraphs."&lt;/span&gt;

&lt;span class="c"&gt;# 4. Expose the API (careful with firewall rules)&lt;/span&gt;
&lt;span class="c"&gt;# Ollama serves on localhost:11434 by default. Reverse-proxy with Caddy or Nginx.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add Open WebUI if you want a ChatGPT-like browser interface. Add &lt;code&gt;llama-swap&lt;/code&gt; if you want to load different models on demand without restarting.&lt;/p&gt;

&lt;h2&gt;
  
  
  When NOT to self-host
&lt;/h2&gt;

&lt;p&gt;A $5 VPS gives you about 5 to 8 tokens per second on a 7B model. That is fine for one user typing in a chat. It is not fine for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time voice assistants. Latency will be embarrassing.&lt;/li&gt;
&lt;li&gt;Multi-user chat services. Four concurrent users will queue and feel broken.&lt;/li&gt;
&lt;li&gt;Anything that needs tool use, function calling at scale, or long-context (&amp;gt;8K tokens).&lt;/li&gt;
&lt;li&gt;Production RAG over millions of documents with tight latency SLAs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For those workloads, you want a GPU instance. That immediately pushes you above $100/month with Vast.ai, RunPod, or a dedicated server with a consumer GPU. At that point, OpenAI API or Anthropic API is often cheaper up to surprisingly high volumes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick comparison: which $5 to $7 VPS wins?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use case&lt;/th&gt;
&lt;th&gt;Best pick&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Lowest price with 8 GB RAM&lt;/td&gt;
&lt;td&gt;Contabo Cloud VPS 4&lt;/td&gt;
&lt;td&gt;€4.40 for 8 GB is unmatched&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best tokens per second per euro&lt;/td&gt;
&lt;td&gt;No clear pick today&lt;/td&gt;
&lt;td&gt;Both ARM lines that led here, Hetzner CAX and netcup ARM G11, are sold out&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Largest model storage&lt;/td&gt;
&lt;td&gt;netcup VPS 1000 G12&lt;/td&gt;
&lt;td&gt;256 GB NVMe stores a dozen models easily&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fast disk for model loading&lt;/td&gt;
&lt;td&gt;Contabo Cloud VPS Plus 4&lt;/td&gt;
&lt;td&gt;150 GB NVMe on EPYC; standard Cloud VPS is SSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Running LLM + web app on one box&lt;/td&gt;
&lt;td&gt;Contabo Cloud VPS 6&lt;/td&gt;
&lt;td&gt;12 GB RAM leaves room for Postgres and nginx&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reliability regardless of price&lt;/td&gt;
&lt;td&gt;Hetzner CPX32&lt;/td&gt;
&lt;td&gt;The cheapest 8 GB Hetzner you can still buy, at €35.49&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can also compare them side by side on &lt;a href="https://hostingsift.com/compare/contabo-vs-hetzner" rel="noopener noreferrer"&gt;Contabo vs Hetzner&lt;/a&gt; or review the full &lt;a href="https://hostingsift.com/category/cloud-hosting" rel="noopener noreferrer"&gt;cloud VPS category&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes this year
&lt;/h2&gt;

&lt;p&gt;Two developments worth tracking in 2026:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smaller models keep getting smarter.&lt;/strong&gt; Phi-3.5 Mini already outperforms last year's 13B models on some benchmarks. Expect 2B and 3B models to be genuinely production-useful by Q4 2026. That makes the 2 GB RAM tier (under $2) a legitimate option.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ARM inference is closing the gap.&lt;/strong&gt; Apple showed what M-series can do. Ampere Altra and AWS Graviton are bringing similar memory bandwidth advantages to $5 VPS plans. If you have not tried ARM yet, this is the year.&lt;/p&gt;

&lt;h2&gt;
  
  
  The verdict
&lt;/h2&gt;

&lt;p&gt;If you want to learn, build a personal assistant, run background summarization, or stand up a private chatbot for a small team, a €5 to €8 VPS with 8 GB of RAM is genuinely enough in 2026. Pick &lt;a href="https://hostingsift.com/hosting/contabo" rel="noopener noreferrer"&gt;Contabo&lt;/a&gt; for raw price, &lt;a href="https://hostingsift.com/hosting/netcup" rel="noopener noreferrer"&gt;netcup&lt;/a&gt; for the biggest disk. &lt;a href="https://hostingsift.com/hosting/hetzner" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt; is still the reliability benchmark, but until its cost-optimised line comes back, entry is €35.49 rather than €8.49. Avoid the US hyperscaler budget tiers; they are optimised for a different use case.&lt;/p&gt;

&lt;p&gt;If you want to serve real users at real volume, stop pretending a shared VPS is the answer. Use an API, or skip straight to a GPU host.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hostingsift.com/blog/ai-powered-hosting-what-providers-actually-offer-2026" rel="noopener noreferrer"&gt;AI-Powered Hosting: What Providers Actually Offer in 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hostingsift.com/blog/managed-vs-unmanaged-vps" rel="noopener noreferrer"&gt;Managed vs Unmanaged VPS: When Is the Premium Worth It?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hostingsift.com/blog/vultr-vs-linode-vs-digitalocean" rel="noopener noreferrer"&gt;Vultr vs Linode vs DigitalOcean: Developer Cloud Hosting Compared&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://hostingsift.com/blog/self-hosted-llm-5-dollar-vps-2026" rel="noopener noreferrer"&gt;hostingsift.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>vps</category>
      <category>selfhosted</category>
    </item>
    <item>
      <title>The Raw Power of Svelte 5 Runes: 70 Components, 25 KB, Full Reactivity</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Wed, 25 Feb 2026 13:14:30 +0000</pubDate>
      <link>https://dev.to/hostingsift/the-raw-power-of-svelte-5-runes-70-components-25-kb-full-reactivity-2npp</link>
      <guid>https://dev.to/hostingsift/the-raw-power-of-svelte-5-runes-70-components-25-kb-full-reactivity-2npp</guid>
      <description>&lt;h1&gt;
  
  
  Svelte 5 Runes in Production: What We Learned Building 70+ Components
&lt;/h1&gt;

&lt;p&gt;When Svelte 5 shipped runes, the community split in two. One side said "you're just copying React." The other saw the future of reactivity. We just started writing code. 70+ components later, powering &lt;a href="https://hostingsift.com" rel="noopener noreferrer"&gt;HostingSift&lt;/a&gt; (a hosting comparison platform), here's what we actually know.&lt;/p&gt;

&lt;h2&gt;
  
  
  What runes are and why you should care
&lt;/h2&gt;

&lt;p&gt;Runes are compiler instructions. They look like functions (&lt;code&gt;$state()&lt;/code&gt;, &lt;code&gt;$derived()&lt;/code&gt;, &lt;code&gt;$effect()&lt;/code&gt;), but they're not. Svelte transforms them at build time, not at runtime. That's the key difference from React hooks, Vue composables, and everything else out there.&lt;/p&gt;

&lt;p&gt;In Svelte 4, reactivity was implicit. Write &lt;code&gt;let count = 0&lt;/code&gt; and the compiler decides when to update the DOM. It worked, but it had traps. &lt;code&gt;$:&lt;/code&gt; blocks got confusing with complex logic, and the line between "reactive" and "just a variable" was blurry.&lt;/p&gt;

&lt;p&gt;Runes fix that with explicit signals:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"ts"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;hostings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$state&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Hosting&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;([])&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;loading&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;$state&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$state&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;currentSort&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;$state&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rating&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;totalPages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;$derived&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ceil&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

  &lt;span class="nf"&gt;$effect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;currentQueryString&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;fetchHostings&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You read it and know exactly what's reactive. No magic. No guessing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The reactivity model: what actually happens under the hood
&lt;/h2&gt;

&lt;p&gt;Here's the thing most articles skip. Svelte 5's reactivity is signal-based, but the compiler does the dependency tracking for you. You never call &lt;code&gt;createSignal()&lt;/code&gt; or wrap things in &lt;code&gt;ref()&lt;/code&gt;. You write normal JavaScript and the compiler figures out the reactive graph.&lt;/p&gt;

&lt;p&gt;When you write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;let loading = $state(true)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The compiler turns it into something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;loading&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;source&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every read of &lt;code&gt;loading&lt;/code&gt; in the template or in a &lt;code&gt;$derived&lt;/code&gt;/&lt;code&gt;$effect&lt;/code&gt; block registers a dependency. Every write triggers updates to anything that depends on it. No manual dependency arrays. No stale closure bugs.&lt;/p&gt;

&lt;p&gt;This is fundamentally different from React's model. In React, &lt;code&gt;useEffect&lt;/code&gt; re-runs based on a dependency array &lt;em&gt;you&lt;/em&gt; maintain. Forget a dependency, get a stale value. Add too many, get infinite loops. Svelte tracks dependencies automatically because it controls the compiler. The reactive graph is built at compile time, not runtime.&lt;/p&gt;

&lt;p&gt;Compared to Vue's &lt;code&gt;ref()&lt;/code&gt; / &lt;code&gt;reactive()&lt;/code&gt;, you also skip the &lt;code&gt;.value&lt;/code&gt; ceremony. In Vue you write &lt;code&gt;count.value++&lt;/code&gt;. In Svelte you write &lt;code&gt;count++&lt;/code&gt;. The compiler knows it's reactive and generates the right code.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we built a reactive filter system with runes
&lt;/h2&gt;

&lt;p&gt;This is where runes really clicked for us. Our &lt;a href="https://hostingsift.com/hosting" rel="noopener noreferrer"&gt;hosting comparison page&lt;/a&gt; has multiple filter dimensions: hosting type, technology stack, price range, search, sort order, pagination. Each filter lives in its own nanostore atom, and they all feed into a computed API query string.&lt;/p&gt;

&lt;p&gt;Here's the store layer (plain nanostores, framework-agnostic):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// stores/filters.ts&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;atom&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;computed&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;nanostores&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;$type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;atom&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;$tech&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;atom&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;([])&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;$minPrice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;atom&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;$maxPrice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;atom&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;$sort&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;atom&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;price-asc&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;$page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;atom&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;$search&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;atom&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;// This recomputes whenever ANY filter changes&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;$apiQueryString&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;$type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$tech&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$minPrice&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$maxPrice&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$sort&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$page&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$search&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tech&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;minPrice&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;maxPrice&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;search&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URLSearchParams&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tech&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tech&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tech&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Seven independent atoms feeding into one computed query string. When you change any filter, &lt;code&gt;$apiQueryString&lt;/code&gt; recomputes and the list refetches. That's the reactive graph in action.&lt;/p&gt;

&lt;p&gt;Now here's the interesting part: bridging this into Svelte 5 components.&lt;/p&gt;

&lt;h3&gt;
  
  
  The bridge pattern we use everywhere
&lt;/h3&gt;

&lt;p&gt;Nanostores don't know about runes. So we bridge them with a pattern that shows up in almost every component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"ts"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;$type&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;typeStore&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setType&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../../stores/filters&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;activeType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$state&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;typeStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

  &lt;span class="nf"&gt;$effect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;typeStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;activeType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three lines: initial value from the store, subscribe in an effect, cleanup returned automatically. Every filter component does this. &lt;code&gt;TypeTabs&lt;/code&gt;, &lt;code&gt;TechFilter&lt;/code&gt;, &lt;code&gt;PriceRangeSlider&lt;/code&gt;, &lt;code&gt;ActiveFilters&lt;/code&gt; all follow the same pattern.&lt;/p&gt;

&lt;p&gt;For components that track multiple stores, we batch the subscriptions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;$effect(() =&amp;gt; &lt;span class="si"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;unsubs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nx"&gt;typeStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;currentType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="nx"&gt;techStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;currentTech&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="nx"&gt;minPriceStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;currentMinPrice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="nx"&gt;maxPriceStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;currentMaxPrice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="nx"&gt;priceMaxStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ceiling&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="nx"&gt;priceFloorStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;floor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;unsubs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;unsub&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;unsub&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="si"&gt;}&lt;/span&gt;)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One effect, six subscriptions, one cleanup function. The effect runs once on mount, subscribes to everything, and cleans up all listeners when the component is destroyed. In React you'd need &lt;code&gt;useEffect&lt;/code&gt; with a dependency array (probably wrong on the first try) or multiple &lt;code&gt;useEffect&lt;/code&gt; calls. Here it's flat and obvious.&lt;/p&gt;

&lt;h3&gt;
  
  
  $derived for computed filter state
&lt;/h3&gt;

&lt;p&gt;The real power shows when you start deriving values. Our &lt;code&gt;ActiveFilters&lt;/code&gt; component needs to know if any filter is active:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;const hasFilters = $derived(
  currentType !== null ||
  currentTech.length &amp;gt; 0 ||
  currentMinPrice &amp;gt; floor ||
  currentMaxPrice &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nt"&gt;ceiling&lt;/span&gt;
&lt;span class="err"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No &lt;code&gt;useMemo&lt;/code&gt;. No cache key. Just an expression that re-evaluates when any of its dependencies change. Svelte tracks which &lt;code&gt;$state&lt;/code&gt; variables you read inside &lt;code&gt;$derived&lt;/code&gt; and only recalculates when those specific values change.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;TechFilter&lt;/code&gt; component uses &lt;code&gt;$derived&lt;/code&gt; for show/hide logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;const visibleOptions = $derived(
  showAll ? techOptions : techOptions.slice(0, VISIBLE_COUNT)
)
const hiddenCount = $derived(
  Math.max(0, techOptions.length - VISIBLE_COUNT)
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When &lt;code&gt;showAll&lt;/code&gt; flips or &lt;code&gt;techOptions&lt;/code&gt; changes (after the API responds), both derived values update and the template re-renders. You don't think about it. It just works.&lt;/p&gt;

&lt;h3&gt;
  
  
  The price slider: reactive all the way down
&lt;/h3&gt;

&lt;p&gt;Our dual-range price slider is the most reactive component we have. It juggles local drag state, store values, computed percentages, and dynamically generated pip labels:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;let localMin = $state(minPriceStore.get())
let localMax = $state(maxPriceStore.get())
let ceiling = $state(priceMaxStore.get())
let isDragging = $state(false)

// Sync from store, but not while dragging
$effect(() =&amp;gt; &lt;span class="si"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;unsubMin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;minPriceStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isDragging&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;localMin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt;
  &lt;span class="si"&gt;}&lt;/span&gt;)
  const unsubMax = maxPriceStore.subscribe(val =&amp;gt; &lt;span class="si"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isDragging&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;localMax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt;
  &lt;span class="si"&gt;}&lt;/span&gt;)
  // ...
  return () =&amp;gt; &lt;span class="si"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;unsubMin&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="nf"&gt;unsubMax&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="cm"&gt;/* ... */&lt;/span&gt; &lt;span class="si"&gt;}&lt;/span&gt;
})

// These recompute on every drag frame
const range = $derived(ceiling - floor)
const minPercent = $derived(range &amp;gt; 0 ? ((localMin - floor) / range) * 100 : 0)
const maxPercent = $derived(range &amp;gt; 0 ? ((localMax - floor) / range) * 100 : 100)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As the user drags, &lt;code&gt;localMin&lt;/code&gt;/&lt;code&gt;localMax&lt;/code&gt; update, which triggers &lt;code&gt;minPercent&lt;/code&gt;/&lt;code&gt;maxPercent&lt;/code&gt; to recompute, which moves the slider fill in the template. When they release, we commit to the store, which triggers the API fetch. The &lt;code&gt;isDragging&lt;/code&gt; guard prevents the store subscription from fighting with the local drag state.&lt;/p&gt;

&lt;p&gt;In React you'd model this with &lt;code&gt;useState&lt;/code&gt; + &lt;code&gt;useRef&lt;/code&gt; + &lt;code&gt;useCallback&lt;/code&gt; + &lt;code&gt;useEffect&lt;/code&gt; with carefully managed dependency arrays. Here it's just assignments and derived values. The compiler handles the rest.&lt;/p&gt;

&lt;p&gt;The pip labels are a &lt;code&gt;$derived.by()&lt;/code&gt; because the logic needs intermediate variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;const pips = $derived.by(() =&amp;gt; &lt;span class="si"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;range&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;`$${floor}`&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rough&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;range&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log10&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rough&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;norm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;rough&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;mag&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;step&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;norm&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;mag&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;norm&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;mag&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;mag&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;`$${floor}`&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ceil&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;floor&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;step&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;step&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;ceiling&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;step&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`$${v}`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="si"&gt;}&lt;/span&gt;
  return labels
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;$derived()&lt;/code&gt; is for single expressions. &lt;code&gt;$derived.by()&lt;/code&gt; is for when you need &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;for&lt;/code&gt;, or temporary variables. Both are reactive the same way.&lt;/p&gt;

&lt;h2&gt;
  
  
  $effect: the cleanup story
&lt;/h2&gt;

&lt;p&gt;The killer feature of &lt;code&gt;$effect&lt;/code&gt; isn't the effect itself. It's the cleanup. You return a function and Svelte calls it when dependencies change or the component unmounts. No &lt;code&gt;onDestroy&lt;/code&gt; import, no separate cleanup lifecycle.&lt;/p&gt;

&lt;p&gt;Click outside handler with automatic cleanup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;$effect(() =&amp;gt; &lt;span class="si"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;searchOpen&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleClickOutside&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleClickOutside&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="si"&gt;}&lt;/span&gt;
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The listener only exists while the dropdown is open. Close it, listener gone. Unmount the component, listener gone. You can't forget.&lt;/p&gt;

&lt;p&gt;Body scroll lock for a mobile bottom sheet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;let isOpen = $state(false)

function open() &lt;span class="si"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;isOpen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;overflow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hidden&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="si"&gt;}&lt;/span&gt;

function close() &lt;span class="si"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;isOpen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;overflow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;
&lt;span class="si"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No effect needed here because the state change is synchronous and user-driven. That's another thing runes teach you: not everything needs to be reactive. Sometimes a plain function is better.&lt;/p&gt;

&lt;h2&gt;
  
  
  The simplicity argument: less code, fewer bugs
&lt;/h2&gt;

&lt;p&gt;Let's be blunt. Every framework claims to be simple. But simplicity isn't about marketing copy. It's about how much code you write for the same result, and how many places that code can go wrong.&lt;/p&gt;

&lt;p&gt;Here's a toggle button. React:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;isOpen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsOpen&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isOpen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Svelte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;isOpen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;$state&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All three are one-liners. Fair enough. Now let's look at something real: a component that reads from an external store, derives a computed value, and cleans up on unmount.&lt;/p&gt;

&lt;p&gt;React version of our TypeTabs filter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;TypeTabs&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;activeType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setActiveType&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;typeStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;unsub&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;typeStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setActiveType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;unsub&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleClick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useCallback&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;setType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex flex-wrap gap-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;TYPES&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;
          &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
          &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`chip &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;activeType&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;active&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
          &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Svelte version. The actual code we ship:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"ts"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;$type&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;typeStore&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setType&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../../stores/filters&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;activeType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$state&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;typeStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

  &lt;span class="nf"&gt;$effect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;typeStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;activeType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"flex flex-wrap gap-2"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="k"&gt;#each&lt;/span&gt; &lt;span class="nx"&gt;TYPES&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"chip {activeType === t.value ? 'active' : ''}"&lt;/span&gt;
      &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="k"&gt;/each&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Count the concepts. React: &lt;code&gt;useState&lt;/code&gt;, &lt;code&gt;useEffect&lt;/code&gt;, &lt;code&gt;useCallback&lt;/code&gt;, dependency array, JSX return statement, &lt;code&gt;className&lt;/code&gt; instead of &lt;code&gt;class&lt;/code&gt;, &lt;code&gt;key&lt;/code&gt; prop. Svelte: &lt;code&gt;$state&lt;/code&gt;, &lt;code&gt;$effect&lt;/code&gt;, template. That's it.&lt;/p&gt;

&lt;p&gt;The React version has more ways to break. Forget the dependency array, you get stale state. Skip &lt;code&gt;useCallback&lt;/code&gt;, you get unnecessary re-renders (or your linter screams at you). The Svelte version has one moving part: the store subscription with automatic cleanup.&lt;/p&gt;

&lt;p&gt;Now look at our &lt;code&gt;ActiveFilters&lt;/code&gt; component. It subscribes to 6 stores and derives a boolean:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;let currentType = $state(typeStore.get())
let currentTech = $state(techStore.get())
let currentMinPrice = $state(minPriceStore.get())
let currentMaxPrice = $state(maxPriceStore.get())
let ceiling = $state(priceMaxStore.get())
let floor = $state(priceFloorStore.get())

$effect(() =&amp;gt; &lt;span class="si"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;unsubs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nx"&gt;typeStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;currentType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="nx"&gt;techStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;currentTech&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="nx"&gt;minPriceStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;currentMinPrice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="nx"&gt;maxPriceStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;currentMaxPrice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="nx"&gt;priceMaxStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ceiling&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="nx"&gt;priceFloorStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;floor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;unsubs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;unsub&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;unsub&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="si"&gt;}&lt;/span&gt;)

const hasFilters = $derived(
  currentType !== null ||
  currentTech.length &amp;gt; 0 ||
  currentMinPrice &amp;gt; floor ||
  currentMaxPrice &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nt"&gt;ceiling&lt;/span&gt;
&lt;span class="err"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In React, this would be six &lt;code&gt;useState&lt;/code&gt; calls, a &lt;code&gt;useEffect&lt;/code&gt; with an empty dependency array, and a &lt;code&gt;useMemo&lt;/code&gt; with six dependencies (that you'd probably get wrong on the first try). Or you'd pull in Zustand or Jotai and add another abstraction layer.&lt;/p&gt;

&lt;p&gt;In Svelte, it's assignments and one effect. &lt;code&gt;$derived&lt;/code&gt; doesn't need you to list dependencies. The compiler reads the expression and tracks them automatically.&lt;/p&gt;

&lt;p&gt;This scales. Our most complex component (&lt;code&gt;HostingList&lt;/code&gt;) has 12 &lt;code&gt;$state&lt;/code&gt; declarations, 4 &lt;code&gt;$derived&lt;/code&gt; values, 5 &lt;code&gt;$effect&lt;/code&gt; blocks, and handles search, sort, filters, pagination, and compare selection. It's 286 lines including the template. The equivalent React component would easily be 400+, and most of that extra code would be dependency arrays, memoization, and state setter functions.&lt;/p&gt;

&lt;p&gt;The point isn't that React is bad. It's that Svelte's compiler does work that React pushes onto the developer. Less manual bookkeeping means fewer places to mess up.&lt;/p&gt;

&lt;h2&gt;
  
  
  $props: TypeScript-first component contracts
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;interface Props &lt;span class="si"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;CompareItem&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;
  &lt;span class="nx"&gt;max&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;
  &lt;span class="nx"&gt;onRemove&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;
  &lt;span class="nx"&gt;onClear&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;
  &lt;span class="nx"&gt;onCompare&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;
&lt;span class="si"&gt;}&lt;/span&gt;

let &lt;span class="si"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;max&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;onRemove&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;onClear&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;onCompare&lt;/span&gt; &lt;span class="si"&gt;}&lt;/span&gt;: Props = $props()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of &lt;code&gt;export let items&lt;/code&gt; and hoping the parent passes the right type. TypeScript catches mistakes at compile time. Default values work with standard destructuring. Callbacks are just props, same as React.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bundle size: the actual numbers
&lt;/h2&gt;

&lt;p&gt;Svelte 5 compiles runes to vanilla JS at build time. There's no 40+ KB runtime (React) or 30+ KB runtime (Vue) shipped to the browser. Svelte's runtime is under 5 KB gzipped and tree-shakes aggressively.&lt;/p&gt;

&lt;p&gt;In our case: 70+ Svelte components including a quiz wizard, dual-range price slider, filter system, compare bar, review form, and a full admin panel. Client JS stays under 25 KB per page (gzipped, including routing). React's runtime alone is bigger than that.&lt;/p&gt;

&lt;p&gt;Runes add zero overhead. &lt;code&gt;$state(0)&lt;/code&gt; compiles to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;rating&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;source&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;$derived(items.length &amp;gt;= 2)&lt;/code&gt; becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;canCompare&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;derived&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The compiler knows exactly which values are reactive and generates only the code it needs. No virtual DOM diffing. No runtime dependency tracking. Just surgical DOM updates.&lt;/p&gt;

&lt;h2&gt;
  
  
  What surprised us
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Granular updates without effort.&lt;/strong&gt; When &lt;code&gt;hostings = newArray&lt;/code&gt; runs, Svelte doesn't re-render the whole list. It diffs the keyed &lt;code&gt;{#each}&lt;/code&gt; block and only touches changed DOM nodes. We never had to think about &lt;code&gt;React.memo&lt;/code&gt; or &lt;code&gt;shouldComponentUpdate&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conditional effects actually work.&lt;/strong&gt; &lt;code&gt;$effect&lt;/code&gt; + &lt;code&gt;if&lt;/code&gt; + &lt;code&gt;return cleanup&lt;/code&gt; gives you fine-grained control in 5 lines. The click-outside handler above would be a custom hook in React (15+ lines, reusable but noisy).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TypeScript just works.&lt;/strong&gt; &lt;code&gt;$state&amp;lt;Hosting[]&amp;gt;([])&lt;/code&gt; does what you expect. No wrapper types, no utility generics, no &lt;code&gt;Ref&amp;lt;T&amp;gt;&lt;/code&gt; vs &lt;code&gt;T&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Derived chains are fast.&lt;/strong&gt; &lt;code&gt;floor&lt;/code&gt; changes, &lt;code&gt;range&lt;/code&gt; recomputes, &lt;code&gt;minPercent&lt;/code&gt; recomputes, &lt;code&gt;pips&lt;/code&gt; recomputes, DOM updates. Four levels of derived state and it's instant because each step only runs if its inputs changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What bites
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The nanostores bridge.&lt;/strong&gt; Four lines per store isn't terrible, but it's ceremony. We'll probably write a &lt;code&gt;useNanostore()&lt;/code&gt; utility at some point. For now the pattern is consistent and bug-free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$effect grabs everything it reads.&lt;/strong&gt; If you read &lt;code&gt;currentQueryString&lt;/code&gt; inside an effect, the effect re-runs when it changes. This is correct behavior, but you need to be careful not to trigger infinite loops (effect writes to state that the effect reads).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Migrating from Svelte 4.&lt;/strong&gt; Not trivial. &lt;code&gt;$:&lt;/code&gt; blocks need to be split into &lt;code&gt;$derived&lt;/code&gt; and &lt;code&gt;$effect&lt;/code&gt;. &lt;code&gt;export let&lt;/code&gt; becomes &lt;code&gt;$props()&lt;/code&gt;. The good news: &lt;code&gt;npx sv migrate svelte-5&lt;/code&gt; handles 90% of cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick reference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rune&lt;/th&gt;
&lt;th&gt;Use case&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$state()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mutable value&lt;/td&gt;
&lt;td&gt;&lt;code&gt;let loading = $state(true)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$derived()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Computed from state&lt;/td&gt;
&lt;td&gt;&lt;code&gt;const total = $derived(items.length)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$derived.by()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Complex computed with if/for&lt;/td&gt;
&lt;td&gt;&lt;code&gt;$derived.by(() =&amp;gt; { ... })&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$effect()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Side effects, subscriptions&lt;/td&gt;
&lt;td&gt;Fetch, event listeners, store sync&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$props()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Component inputs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;let { name } = $props()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$bindable()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Two-way binding prop&lt;/td&gt;
&lt;td&gt;&lt;code&gt;let { value = $bindable() } = $props()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;Runes make reactivity explicit. You know what's state, what's computed, what's a side effect. The compiler generates minimal code. TypeScript works without hacks. The reactive graph is built once at compile time and runs with near-zero overhead.&lt;/p&gt;

&lt;p&gt;We run 70+ components in production at &lt;a href="https://hostingsift.com" rel="noopener noreferrer"&gt;HostingSift&lt;/a&gt; with Astro SSR, nanostores for cross-island state, and Svelte 5 runes for local reactivity. A full filter system with type tabs, technology chips, a dual-range price slider, active filter pills, search with autocomplete, and sort dropdown. All reactive, all coordinated through a single computed query string, all under 25 KB shipped to the browser.&lt;/p&gt;

&lt;p&gt;If you're starting a new project and the React/Vue/Svelte decision is eating your time, just try runes. They're different enough to deserve a real look.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>javascript</category>
      <category>performance</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Why we chose Astro over SvelteKit for our hosting comparison platform</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Mon, 23 Feb 2026 21:00:31 +0000</pubDate>
      <link>https://dev.to/hostingsift/why-we-chose-astro-over-sveltekit-for-our-hosting-comparison-platform-3cc6</link>
      <guid>https://dev.to/hostingsift/why-we-chose-astro-over-sveltekit-for-our-hosting-comparison-platform-3cc6</guid>
      <description>&lt;h1&gt;
  
  
  Why we chose Astro over SvelteKit for our hosting comparison platform
&lt;/h1&gt;

&lt;p&gt;We're building &lt;a href="https://hostingsift.com" rel="noopener noreferrer"&gt;HostingSift&lt;/a&gt;, a platform for comparing hosting providers side by side. Pricing tables, feature breakdowns, filters, user reviews. When we started, we had one decision that would shape everything else: SvelteKit or Astro?&lt;/p&gt;

&lt;p&gt;We went with Astro. Here's why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some context first
&lt;/h2&gt;

&lt;p&gt;HostingSift is a content-heavy site. We have 23+ hosting provider profiles, each with multiple plans, pricing tiers, feature specs, and user reviews. On top of that there are comparison pages, category listings, a recommendation quiz, and a blog.&lt;/p&gt;

&lt;p&gt;The interactive parts are specific and well-contained: filtering plans by billing period, toggling comparison tables, authentication flows, review forms. Most of what users actually see is static content that doesn't need JavaScript to render.&lt;/p&gt;

&lt;p&gt;This ratio matters. It shaped everything that followed.&lt;/p&gt;

&lt;h2&gt;
  
  
  SvelteKit was the obvious choice
&lt;/h2&gt;

&lt;p&gt;We love Svelte. The reactivity model in Svelte 5 with runes is elegant. The developer experience is fantastic. SvelteKit is a mature, full-featured framework with file-based routing, SSR, API endpoints, form actions.&lt;/p&gt;

&lt;p&gt;So why not just use it?&lt;/p&gt;

&lt;p&gt;Because SvelteKit is an application framework. It assumes your pages are interactive by default. Every route ships a JavaScript bundle to hydrate the page client-side, even if the page is mostly static HTML.&lt;/p&gt;

&lt;p&gt;You can work around this. You can set &lt;code&gt;ssr: true&lt;/code&gt; and use &lt;code&gt;+page.server.ts&lt;/code&gt; to keep data fetching on the server. You can prerender specific routes. But you're swimming against the current. The defaults push you toward shipping more JavaScript than a content site needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Astro gets right for content sites
&lt;/h2&gt;

&lt;p&gt;Astro starts from the opposite end. Zero client JavaScript by default. Every page renders as static HTML until you explicitly opt in to interactivity.&lt;/p&gt;

&lt;p&gt;This is not a subtle difference. It changes how you think about building pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Islands, not full-page hydration
&lt;/h3&gt;

&lt;p&gt;With Astro, we compose pages from &lt;code&gt;.astro&lt;/code&gt; components (static HTML, zero JS) and Svelte components (interactive, with JS). The Svelte components are islands. They hydrate independently. The rest of the page is just HTML that the browser renders immediately.&lt;/p&gt;

&lt;p&gt;Our hosting profile page is a good example. The page layout, provider description, specs table, pros and cons list, SEO metadata... all static Astro components. Zero JavaScript shipped. Then we drop in a &lt;code&gt;PlanCard&lt;/code&gt; component with &lt;code&gt;client:load&lt;/code&gt; for the interactive pricing table where users toggle billing periods. A &lt;code&gt;ReviewForm&lt;/code&gt; for authenticated review submission. A &lt;code&gt;HeaderAuth&lt;/code&gt; for login state.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
import Layout from '../../layouts/Layout.astro'
import PlanCard from '../../components/PlanCard.svelte'
import ReviewSection from '../../components/ReviewSection.svelte'
import SpecsTable from '../../components/SpecsTable.astro'

const { hosting, plans } = await fetchHostingData(slug)
---

&amp;lt;Layout title={hosting.name}&amp;gt;
  &amp;lt;article&amp;gt;
    &amp;lt;h1&amp;gt;{hosting.name}&amp;lt;/h1&amp;gt;
    &amp;lt;p&amp;gt;{hosting.description}&amp;lt;/p&amp;gt;

    &amp;lt;!-- Static HTML, no JS overhead --&amp;gt;
    &amp;lt;SpecsTable specs={hosting.specs} /&amp;gt;

    &amp;lt;!-- Interactive islands, hydrate independently --&amp;gt;
    &amp;lt;PlanCard client:load plans={plans} /&amp;gt;
    &amp;lt;ReviewSection client:load hostingId={hosting.id} /&amp;gt;
  &amp;lt;/article&amp;gt;
&amp;lt;/Layout&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each island hydrates on its own. If one fails, the rest of the page still works fine. In SvelteKit, the entire page is a single hydration unit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerendering is the default, not an opt-in
&lt;/h3&gt;

&lt;p&gt;In Astro's hybrid mode, pages are prerendered at build time unless you explicitly say otherwise. Our homepage, category pages, legal pages, blog posts... all static HTML files. Fast, cacheable, no server compute on each request.&lt;/p&gt;

&lt;p&gt;For pages that need fresh data (hosting profiles with live pricing, filtered listings), we mark them as server-rendered. It's explicit and intentional.&lt;/p&gt;

&lt;p&gt;SvelteKit takes the opposite approach. Everything is server-rendered by default. You opt in to prerendering per route. The mental model is reversed. For a site where the majority of pages can safely be static, Astro's default aligns better with reality.&lt;/p&gt;

&lt;h3&gt;
  
  
  We still write Svelte
&lt;/h3&gt;

&lt;p&gt;This is what made the decision easy. Astro is not a replacement for Svelte. It's a composition layer around it.&lt;/p&gt;

&lt;p&gt;All our interactive components are pure Svelte 5 with runes, stores, reactive state. We didn't lose anything from the Svelte ecosystem. We just moved the routing and page composition up to Astro, where it can make smarter decisions about what ships to the browser.&lt;/p&gt;

&lt;p&gt;The pattern feels natural once you get used to it. Page structure lives in &lt;code&gt;.astro&lt;/code&gt; files (templating with zero overhead). Interactive behavior lives in &lt;code&gt;.svelte&lt;/code&gt; files (full reactivity where it's actually needed).&lt;/p&gt;

&lt;h2&gt;
  
  
  The tradeoffs we accepted
&lt;/h2&gt;

&lt;p&gt;Astro is not a free lunch. Here's what we gave up.&lt;/p&gt;

&lt;h3&gt;
  
  
  No form actions
&lt;/h3&gt;

&lt;p&gt;SvelteKit's form actions with progressive enhancement are genuinely nice. In Astro, we handle forms through our Hono API with client-side fetch calls. It works, but there's more boilerplate involved. We write &lt;code&gt;onSubmit&lt;/code&gt; handlers and manage loading states manually where SvelteKit would handle the plumbing for us.&lt;/p&gt;

&lt;h3&gt;
  
  
  Two component models
&lt;/h3&gt;

&lt;p&gt;Anyone working on the codebase needs to understand both &lt;code&gt;.astro&lt;/code&gt; and &lt;code&gt;.svelte&lt;/code&gt; files. When does something belong in Astro vs Svelte? The rule is straightforward (static content = Astro, interactive behavior = Svelte), but it's still a decision you make dozens of times a day.&lt;/p&gt;

&lt;h3&gt;
  
  
  View Transitions have rough edges
&lt;/h3&gt;

&lt;p&gt;Astro's View Transitions look great but come with real gotchas. Inline scripts re-execute on each navigation. We spent more time than expected getting Google Analytics and &lt;code&gt;vanilla-cookieconsent&lt;/code&gt; to behave correctly, adding guard flags to prevent double initialization. SvelteKit's client-side routing handles this more gracefully out of the box.&lt;/p&gt;

&lt;h3&gt;
  
  
  Separate API server
&lt;/h3&gt;

&lt;p&gt;SvelteKit has &lt;code&gt;+server.ts&lt;/code&gt; for API routes, tightly integrated with the framework. We chose to run a standalone Hono server for our API. This was intentional (the API will eventually serve a mobile app too), but it means two processes to manage, separate deployments, and CORS configuration that SvelteKit wouldn't need.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this paid off
&lt;/h2&gt;

&lt;p&gt;The results justified the decision.&lt;/p&gt;

&lt;p&gt;Our homepage ships about 40KB of JavaScript total. The interactive bits (provider grid, newsletter form) are small isolated bundles. In a SvelteKit setup, the framework's client-side router adds baseline overhead before any of our code even loads.&lt;/p&gt;

&lt;p&gt;Server-side OG image generation fits naturally into Astro's endpoint model. We generate dynamic Open Graph images for every hosting profile, comparison page, and blog post using Satori and Sharp. It's just a standard API route that returns a PNG buffer. No special configuration needed.&lt;/p&gt;

&lt;p&gt;Build times stay fast. Prerendering 50+ static pages, generating sitemaps, and compiling the Svelte islands takes under 30 seconds. Adding a new provider doesn't slow anything down because the build is mostly parallel.&lt;/p&gt;

&lt;h2&gt;
  
  
  The deployment question
&lt;/h2&gt;

&lt;p&gt;This one doesn't get discussed enough.&lt;/p&gt;

&lt;p&gt;SvelteKit works everywhere in theory. In practice, the smoothest path is deploying to Vercel. Rich Harris works there, &lt;code&gt;adapter-auto&lt;/code&gt; detects Vercel out of the box, and the integration is polished. You can absolutely use &lt;code&gt;adapter-node&lt;/code&gt; and self-host, but you'll be configuring things that Vercel handles for you automatically.&lt;/p&gt;

&lt;p&gt;We wanted to self-host. Our stack runs on a single Hetzner ARM64 VPS: the Astro site, the Hono API, PostgreSQL, all behind nginx and Cloudflare. The whole thing costs about €5 a month.&lt;/p&gt;

&lt;p&gt;With Astro, deploying to a VPS was straightforward. Install &lt;code&gt;@astrojs/node&lt;/code&gt;, build, run with PM2. That's it. No adapter quirks, no platform-specific edge cases. The output is a standard Node.js server.&lt;/p&gt;

&lt;p&gt;The cost angle is worth mentioning too. Platforms like Vercel and Netlify use usage-based pricing. The Pro plans start at $20-25 per month, but the real cost depends on traffic, serverless function execution time, and bandwidth. Overages are billed automatically. There are well-documented cases of bills spiking unexpectedly after traffic surges or bot crawls. For a content site that serves a lot of static pages, this pricing model works against you.&lt;/p&gt;

&lt;p&gt;A fixed-cost VPS eliminates that variable entirely. Traffic can double or triple and the bill stays the same. If we outgrow the current server, the next tier up is still a fraction of what a managed platform would cost at equivalent traffic. We're not locked into any vendor's pricing model, and migrating to a bigger box is a straightforward process.&lt;/p&gt;

&lt;p&gt;To be fair, managed platforms give you CI/CD, preview deployments, edge functions, and zero-config scaling. Those are real features with real value, especially for teams that don't want to manage infrastructure. The tradeoff is control and cost predictability versus convenience.&lt;/p&gt;

&lt;p&gt;For us, a €5 VPS with full control was the obvious pick.&lt;/p&gt;

&lt;h2&gt;
  
  
  After several months in production
&lt;/h2&gt;

&lt;p&gt;23 hosting providers, hundreds of plans, comparison pages, a quiz, a blog, user auth, admin panel. All running on that single Hetzner box.&lt;/p&gt;

&lt;p&gt;The architecture has held up. New provider profiles are just data. New interactive features are new Svelte islands dropped into existing pages. New static pages are &lt;code&gt;.astro&lt;/code&gt; files with no client-side cost.&lt;/p&gt;

&lt;p&gt;Would SvelteKit have worked? Of course. For a more app-like product with dashboards, real-time collaboration, heavy client state, we'd pick SvelteKit without thinking twice.&lt;/p&gt;

&lt;p&gt;But for a content-first site where interactivity is the exception rather than the rule, Astro with Svelte islands turned out to be the right call. Not because SvelteKit couldn't do it. Because Astro's defaults already pointed in the direction we wanted to go.&lt;/p&gt;

&lt;p&gt;There's real value in not having to fight your framework.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>frontend</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Built a Hosting Comparison Platform with Astro, Svelte 5 &amp; Hono</title>
      <dc:creator>HostingSift</dc:creator>
      <pubDate>Sat, 21 Feb 2026 08:59:10 +0000</pubDate>
      <link>https://dev.to/hostingsift/i-built-a-hosting-comparison-platform-with-astro-svelte-5-hono-3kde</link>
      <guid>https://dev.to/hostingsift/i-built-a-hosting-comparison-platform-with-astro-svelte-5-hono-3kde</guid>
      <description>&lt;p&gt;I got tired of hosting comparison websites. You know the ones. "Top 10 Best Hosting 2024" articles that haven't been updated since 2022, prices that are completely wrong, and rankings that suspiciously always put the same provider first no matter what.&lt;/p&gt;

&lt;p&gt;So I decided to build my own. Not a blog post with affiliate links, but an actual tool where you can filter by hosting type, compare plans side by side, and see prices that are actually current. After about six months of work, &lt;a href="https://hostingsift.com/" rel="noopener noreferrer"&gt;HostingSift&lt;/a&gt; is live and I figured I'd share what went into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Stack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Astro&lt;/strong&gt; in hybrid SSR mode was the obvious pick. Most pages (hosting profiles, categories, homepage) get prerendered at build time, which means they're fast out of the box. A few routes like the comparison tool need server rendering, and Astro handles that switch per-page which is really convenient.&lt;/p&gt;

&lt;p&gt;For interactive bits I went with &lt;strong&gt;Svelte 5&lt;/strong&gt;. I was on React before and honestly the new runes API (&lt;code&gt;$state&lt;/code&gt;, &lt;code&gt;$derived&lt;/code&gt;, &lt;code&gt;$effect&lt;/code&gt;) won me over pretty quickly. No dependency arrays, no stale closures, components feel lighter. It took maybe a week to get comfortable with the mental model shift and after that I didn't look back.&lt;/p&gt;

&lt;p&gt;The backend is &lt;strong&gt;Hono&lt;/strong&gt; on Node.js. Think Express but with actual TypeScript support and better performance. It handles auth, the admin panel API, affiliate click tracking, all that stuff. Database is &lt;strong&gt;PostgreSQL&lt;/strong&gt; with &lt;strong&gt;Drizzle ORM&lt;/strong&gt; which has been solid for both queries and migrations.&lt;/p&gt;

&lt;p&gt;Everything lives in a monorepo: &lt;code&gt;apps/web&lt;/code&gt;, &lt;code&gt;apps/api&lt;/code&gt;, &lt;code&gt;packages/db&lt;/code&gt;, &lt;code&gt;packages/email&lt;/code&gt;. pnpm workspaces glue it together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping Prices Up to Date
&lt;/h2&gt;

&lt;p&gt;The whole point of the site is showing accurate pricing, so I built an automated pipeline that pulls plan data from each provider on a weekly schedule. Every plan, every billing period, every feature toggle. It compares incoming data against what's already in the database and upserts the differences. Each run also creates a snapshot, so if a provider quietly bumps their renewal price by $2/month, that gets recorded. Over time this builds a price history for every single plan.&lt;/p&gt;

&lt;p&gt;Getting the data right for each provider was the biggest time sink. Every provider structures their pricing page differently. Some have clean layouts, others hide plans behind tabs and dropdowns, and a few change their page structure often enough that things break. You end up writing very provider-specific logic and accepting that maintenance is part of the deal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things I'd Do Differently
&lt;/h2&gt;

&lt;p&gt;I'd spend more time on data validation early on. I almost "fixed" what looked like a pricing bug for one provider before checking their actual website. Turns out they give their biggest promotional discount to mid-tier plans, not the cheapest ones. Now I always verify against the source before touching anything in the database.&lt;/p&gt;

&lt;p&gt;Svelte 5 + Astro is a great combo but the ecosystem is still catching up. Some things that are one-line solutions in React/Next don't have equivalents yet. The tradeoff is worth it though, the output is noticeably lighter and the developer experience is genuinely good.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://hostingsift.com" rel="noopener noreferrer"&gt;HostingSift&lt;/a&gt; is live if you want to check it out. You can filter by hosting type, compare providers, see current prices. Still adding more providers and features so if something looks off or you have ideas, I'd love to hear about it in the comments.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>typescript</category>
      <category>performance</category>
    </item>
  </channel>
</rss>
