Back to blog

Google Signs 22-Year Nuclear Deal in Finland: Half of the Loviisa Plant to Power AI

Hello HaWkers, on September 9, 2026, Google and the Finnish energy company Fortum signed a 22-year power purchase agreement that reserves up to 50% of the capacity of the Loviisa nuclear plant for Google's data centers. Deliveries start in 2028 with a smaller volume and reach half of the plant between 2030 and 2049. On the same day, Google confirmed a € 13 billion investment in AI infrastructure in the country, the company's largest in Europe.

Have you ever stopped to think about where the electricity that answers every prompt you send comes from? In this article we will break down the numbers of the deal, understand why a plant switched on in 1977 became a strategic asset for a big tech company, look at Google's nuclear strategy as a whole and, at the end, use open data from the Finnish power grid to write code that takes the carbon footprint into account.

What Google and Fortum Announced

The contract is a PPA (Power Purchase Agreement), a long-term agreement in which the buyer commits to paying for a slice of a power plant's output for years. The main points disclosed by Fortum and confirmed by World Nuclear News:

  • Duration: 22 years, from 2028 to 2049
  • Volume: starts smaller in 2028 and reaches up to 50% of Loviisa's capacity from 2030 to 2049
  • Stated goal: provide economic certainty for extending the plant's lifetime to 2050 and for new power uprates
  • Power uprate: the deal should enable another 10 MW, on top of the 38 MW that were already planned to come online in 2028
  • Extras: a memorandum of understanding to cooperate on new nuclear generation, renewables and grid flexibility solutions

The contract price was not disclosed. What Fortum made clear was the motivation. According to the company, without significant investments in the lifetime extension, the plant would not be able to keep producing fossil-free electricity after 2030.

Aris Karcanias, Google's energy director for Europe, the Middle East and Africa, summed up the logic on the buyer's side: by supporting the lifetime extension of Loviisa, which is close to the Hamina data center, where Google put down roots in Finland, the company would be doing its part to keep a critical energy source on the grid.

According to coverage of the announcement, this is Google's first nuclear deal outside the United States and the first direct PPA of its kind in Europe between a hyperscaler and a specific power plant.

Loviisa by the Numbers: A 1977 Plant That Got a New Lease on Life

Loviisa sits on Finland's southern coast and is the oldest nuclear plant in the country. The technical data:

Item Value
Reactors 2 VVER-440 pressurized water units
Start of operation Unit 1 in 1977, unit 2 in 1981
Total capacity 1,014 MW (507 MW per unit)
Production in 2024 7.9 TWh
Share of Finnish electricity More than 10%
Operating license Extended in February 2023 until the end of 2050

The license through 2050 had existed since 2023, but a license does not pay for construction work. Fortum has an investment program of around € 1 billion at Loviisa, and roughly € 700 million of that total still had no investment decision. That is exactly the gap the Google contract closes: Fortum says the PPA provides the revenue predictability needed to move forward with 100% of the lifetime extension investments.

Markus Rauramo, President and CEO of Fortum, got straight to the point: long-term partnerships like this one are essential, especially in an uncertain market, with little visibility and highly volatile electricity prices.

Why Google Needs So Much Energy

The short answer is AI. According to the 2025 environmental report, Google's data centers consumed 30.8 million MWh (30.8 TWh) in 2024, up 27% from the previous year and more than double the consumption of four years earlier. The 2026 report, published on June 30, recorded an annual increase of 37% in electricity demand and more than 12 GW of new clean energy contracted in 2025 alone.

We have already covered here on the blog the energy consumption of OpenAI's data centers and thermodynamic computing as a way to reduce AI's energy use. The Loviisa deal is the other side of that same coin: if consumption cannot drop in the short term, someone has to secure the supply.

To get a sense of the scale, you can do the math with the public numbers:

// Public numbers: Fortum (capacity and production) and Google's environmental report (2024 consumption)
const loviisa = {
  capacityMW: 1014, // two VVER-440 units of 507 MW
  production2024TWh: 7.9,
};

const HOURS_PER_YEAR = 8760;

// Capacity factor: how much the plant produced vs. the theoretical maximum running all year long
const theoreticalMaxTWh = (loviisa.capacityMW * HOURS_PER_YEAR) / 1_000_000; // MWh -> TWh
const capacityFactor = loviisa.production2024TWh / theoreticalMaxTWh;

// Google's share: up to 50% of capacity between 2030 and 2049
const googleShareTWh = loviisa.production2024TWh * 0.5;

// Google's data center consumption in 2024: 30.8 million MWh
const googleConsumption2024TWh = 30.8;

console.log(`Theoretical maximum: ${theoreticalMaxTWh.toFixed(2)} TWh/year`);
console.log(`Capacity factor in 2024: ${(capacityFactor * 100).toFixed(1)}%`);
console.log(`Half of production: ~${googleShareTWh.toFixed(2)} TWh/year`);
console.log(
  `Equivalent to ${((googleShareTWh / googleConsumption2024TWh) * 100).toFixed(1)}% of 2024 consumption`
);

The result shows a capacity factor of almost 89%, something no solar or wind source delivers. Half of the production comes to about 3.95 TWh per year, close to 12.8% of everything Google's data centers consumed in 2024. That is a huge slice from a single contract, and with a characteristic that wind and sun do not have: stable production 24 hours a day, cold or hot, with or without wind.

What a PPA Is and Why It Saves Old Power Plants

Nuclear plants have a peculiar financial profile. The fuel is cheap, but the investment is massive and the return takes decades. On a grid with a lot of wind power, like Finland's, the spot market price can crash on very windy days and spike during cold weeks without wind. For anyone who has to decide today on a € 700 million investment that only pays off over 20 years, that volatility is poison.

A PPA trades uncertainty for predictability on both sides. The seller secures revenue; the buyer secures the price and the origin of the energy. The simulation below helps visualize the idea:

// Teaching simulation: fixed price (PPA) vs. spot market.
// WARNING: prices are example values. The price of the Google-Fortum contract was not disclosed.
function compareCosts({ monthlyConsumptionMWh, ppaPrice, spotPrices }) {
  const months = spotPrices.length;
  const ppaCost = monthlyConsumptionMWh * ppaPrice * months;
  const spotCost = spotPrices.reduce((total, price) => total + monthlyConsumptionMWh * price, 0);

  // Standard deviation measures how much the price swings month to month
  const mean = spotPrices.reduce((a, b) => a + b, 0) / months;
  const variance = spotPrices.reduce((sum, p) => sum + (p - mean) ** 2, 0) / months;

  return {
    ppaCost,
    spotCost,
    spotMean: Number(mean.toFixed(1)),
    spotStdDev: Number(Math.sqrt(variance).toFixed(1)),
    ppaStdDev: 0, // with a PPA the price does not swing
  };
}

// 12 hypothetical months, with an expensive winter in the middle (€/MWh)
console.table(
  compareCosts({
    monthlyConsumptionMWh: 1000,
    ppaPrice: 50,
    spotPrices: [40, 35, 30, 25, 20, 30, 45, 60, 90, 140, 110, 70],
  })
);

In this made-up scenario the PPA comes out cheaper, but that is not the point. In a year of low prices the spot market would win. What the contract buys is a standard deviation of zero: Google knows how much it will pay for 20 years, and Fortum knows how much it will receive. That is what unlocks the construction work.

Google's Nuclear Strategy Did Not Start Now

Loviisa is the latest piece in a sequence of bets that mixes future technology with plants that already exist:

  • Kairos Power (October 2024): agreement to develop a fleet of small modular reactors (SMRs) totaling 500 MW by 2035, with the first reactor expected in 2030. In 2025 came a contract with TVA to receive power from the Hermes 2 demonstration reactor.
  • Elementl Power (2025): strategic agreement to prepare three sites for nuclear projects in the United States.
  • Commonwealth Fusion Systems (2025): a 200 MW PPA from the first ARC fusion plant, in Chesterfield County, Virginia, with power expected on the grid in the early 2030s. Google called it the largest direct corporate fusion contract ever signed.
  • NextEra and Duane Arnold (October 2025): a 25-year PPA to restart the 615 MW plant in Iowa, shut down since 2020, with a return expected by the first quarter of 2029.
  • Fortum and Loviisa (September 2026): the first outside the US, and the first focused on keeping a plant running for longer.

Notice the pattern. The SMR and fusion bets are for the 2030s and carry technology risk. Duane Arnold and Loviisa are the opposite: known technology, reactors that have already run for decades, energy available sooner. The engineering lesson is the same as with any production system: you cannot wait for the new architecture to be ready while demand grows 37% a year.

€ 13 Billion, Cold Weather and Seawater: Why Finland

The PPA came together with the announcement of Google's largest investment in Europe. The numbers disclosed by Bikash Koley, Google's Vice President of Global Infrastructure:

  • € 13 billion (about US$ 15 billion) invested in 2027 and 2028
  • Expansion in Hamina and new sites in Kajaani, Muhos and Vaala
  • An average contribution of € 3.6 billion per year to Finnish GDP during construction
  • About 37,000 jobs supported during the construction phase and 7,000 per year after the centers go into operation
  • A 94 MW battery system in Kajaani, expected to start operating at the end of 2027, to provide grid flexibility

Google has been in Finland since 2009, when it converted a decommissioned paper mill in Hamina into a data center and started using seawater for cooling. The cold climate lowers cooling costs, and the energy mix helps: nuclear power accounts for somewhere around 37% of the country's electricity, and the Olkiluoto plant alone met 27.5% of Finnish demand in 2025.

Prime Minister Petteri Orpo celebrated the decision as proof of the country's strengths. But not everyone applauded. According to local press, Antti Kaikkonen, leader of the Centre Party, warned that no one is assessing the situation as a whole, and Social Democratic MP Niina Malm pointed out that it is vital for the population to have enough energy at an affordable price. The underlying question is legitimate: if half of a plant that generates more than 10% of the national electricity is contracted by one company, what is left for homes and industries?

The debate also reached Hacker News, where the story passed 370 points and 340 comments. Google's answer, voiced by Ruth Porat, President and Chief Investment Officer of Alphabet, is that the company intends to add new generation instead of relying only on existing supply, with wind, batteries and the Loviisa power uprates.

In Practice: Reading Finland's Nuclear Production With the Fingrid API

One cool thing about this story is that the Finnish power grid is open. Fingrid, the country's transmission system operator, publishes real-time data under a Creative Commons Attribution 4.0 license. Dataset 188 provides nuclear production in MW, updated every 3 minutes, with history going back to 2014.

To use it, create a free key at data.fingrid.fi. The key goes in the x-api-key header, and the limit is 10,000 requests per day and one request every two seconds. The API has CORS restrictions in the browser, so run it on the server:

// fingrid-nuclear.mjs - Node.js 18+ (native fetch)
// Usage: FINGRID_API_KEY=your-key node fingrid-nuclear.mjs
const API = 'https://data.fingrid.fi/api/datasets';
const NUCLEAR = 188; // Nuclear production in Finland, real time (MW, every 3 min)

const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

async function fetchSeries(datasetId, start, end) {
  const rows = [];
  let page = 1;
  let lastPage = 1;

  do {
    const url = new URL(`${API}/${datasetId}/data`);
    url.searchParams.set('startTime', start.toISOString());
    url.searchParams.set('endTime', end.toISOString());
    url.searchParams.set('format', 'json');
    url.searchParams.set('pageSize', '1000');
    url.searchParams.set('page', String(page));

    const response = await fetch(url, {
      headers: { 'x-api-key': process.env.FINGRID_API_KEY },
    });
    if (!response.ok) throw new Error(`Fingrid responded with HTTP ${response.status}`);

    const body = await response.json();
    rows.push(...body.data); // each row: { datasetId, startTime, endTime, value }
    lastPage = body.pagination?.lastPage ?? 1;
    page += 1;

    // Respect the limit of one request every 2 seconds
    if (page <= lastPage) await sleep(2100);
  } while (page <= lastPage);

  return rows;
}

const end = new Date();
const start = new Date(end.getTime() - 24 * 60 * 60 * 1000); // last 24 hours
const values = (await fetchSeries(NUCLEAR, start, end)).map((row) => row.value);

if (values.length === 0) {
  console.log('No measurements in the period.');
} else {
  const mean = values.reduce((a, b) => a + b, 0) / values.length;
  console.log(`Measurements: ${values.length}`);
  console.log(`Average: ${mean.toFixed(0)} MW`);
  console.log(`Minimum: ${Math.min(...values)} MW | Maximum: ${Math.max(...values)} MW`);
}

A sharp drop in the minimum usually indicates a unit shut down for maintenance or refueling. You can cross-reference it with dataset 192, which provides Finland's total real-time electricity production, and find out the current nuclear share:

// nuclear-share.mjs - what percentage of Finnish production is nuclear right now?
const API = 'https://data.fingrid.fi/api/datasets';
const headers = { 'x-api-key': process.env.FINGRID_API_KEY };

async function latestMeasurement(datasetId) {
  const response = await fetch(`${API}/${datasetId}/data/latest`, { headers });
  if (!response.ok) throw new Error(`Dataset ${datasetId}: HTTP ${response.status}`);
  return response.json(); // object with the measurement's value, startTime and endTime
}

const nuclear = await latestMeasurement(188); // nuclear production (MW)
await new Promise((resolve) => setTimeout(resolve, 2100)); // API rate limit
const production = await latestMeasurement(192); // total production (MW)

const share = (nuclear.value / production.value) * 100;
console.log(`Nuclear: ${nuclear.value} MW of ${production.value} MW (${share.toFixed(1)}%)`);

Carbon-Aware Code: Bringing the Lesson to Your Backend

Google is solving its carbon footprint wholesale, with 22-year contracts. You can solve it retail, by deciding when to run heavy tasks. Fingrid publishes in dataset 265 the CO₂ emission factor of the electricity consumed in Finland, and the same logic applies to any grid that publishes this data:

// carbon-gate.mjs - only runs the heavy job when the grid is cleaner
const API = 'https://data.fingrid.fi/api/datasets';
const CO2_EMISSIONS = 265; // gCO₂/kWh of the electricity consumed in Finland
const THRESHOLD = 40; // example value: adjust based on your region's history
const INTERVAL_MS = 15 * 60 * 1000; // checks every 15 minutes
const MAX_DELAY_MS = 6 * 60 * 60 * 1000; // never postpones more than 6 hours

async function currentIntensity() {
  const response = await fetch(`${API}/${CO2_EMISSIONS}/data/latest`, {
    headers: { 'x-api-key': process.env.FINGRID_API_KEY },
  });
  if (!response.ok) throw new Error(`HTTP ${response.status}`);
  return (await response.json()).value;
}

export async function runWhenClean(job) {
  const start = Date.now();

  while (Date.now() - start < MAX_DELAY_MS) {
    const grams = await currentIntensity();
    if (grams <= THRESHOLD) {
      console.log(`Grid at ${grams} gCO₂/kWh. Running now.`);
      return job();
    }
    console.log(`Grid at ${grams} gCO₂/kWh. Trying again in 15 minutes.`);
    await new Promise((resolve) => setTimeout(resolve, INTERVAL_MS));
  }

  // The deadline expired: the job runs anyway so the business is not blocked
  console.log('Maximum delay reached. Running anyway.');
  return job();
}

// Example: search reindexing, model training, report generation
await runWhenClean(async () => {
  console.log('Running the nightly batch...');
});

The important detail is the maximum delay. Carbon-aware code that postpones a task forever becomes a bug. Define a window that is acceptable for the business and let the exact time float within it.

Outlook: What This Deal Signals for People Who Build Software

The Loviisa deal sends three clear messages.

The first is that energy has become the bottleneck for AI, not chips. When a company's electricity demand grows 37% in one year, the competitive advantage shifts to whoever secures stable megawatts for decades. That is why a 1977 plant that was one investment away from closing in 2030 became a strategic partner of one of the largest technology companies in the world.

The second is that existing infrastructure is worth more than it seemed. Restarting Duane Arnold and extending Loviisa deliver firm power years before any SMR or fusion reactor. It is the old engineering principle of not throwing away the system that works while the new one is still in beta.

The third is political. Data centers compete with homes and industries for the same grid, and the Finnish debate over who gets the energy will repeat itself in every country that attracts AI investment, including Brazil.

For us developers, the practical consequence is that energy efficiency stops being a detail. Choosing the cloud region, scheduling tasks for hours when the grid is cleaner and measuring the computational cost of each feature are architecture decisions that will weigh more and more, both on the bill and on reputation.

Let's go! 🦅

📚 Want to Keep Up With What Is Coming?

This article covered Google's nuclear deal with Fortum in Finland, but the ecosystem changes every week and not everything turns into an article here.

On X I share what I am testing, the behind the scenes of my projects and the news that shows up before it becomes a post.

Follow Me There

👉 Follow @jeffbruchado on X

💡 Daily content about development, career and the tools I actually use

Comments (0)

This article has no comments yet 😢. Be the first! 🚀🦅

Add comments