Norway’s Marriage Collapse: The Silent End of a Social Tradition

SSB
demographics
society
marriage
Norwegian marriages have fallen 40% since their peak — a demographic shift reshaping society faster than anyone noticed
Published

March 15, 2026

The Quiet Revolution Nobody Talks About

While headlines focus on fertility rates and immigration, an equally dramatic shift has unfolded in Norwegian society: marriage is disappearing. Not slowly, not gradually, but in a sustained collapse that has fundamentally altered how Norwegians form families and structure their lives. The numbers are stark, the trend is accelerating, and the implications reach deep into everything from housing policy to pension planning.

Code
library(tidyverse)
library(PxWebApiData)
library(lubridate)
library(scales)
library(MetBrewer)
library(patchwork)

# Color palette - using a sophisticated Norwegian-inspired scheme
pal <- met.brewer("Hiroshige", 7)

The Great Marriage Decline

The data reveals a stunning transformation. From a peak in the 1970s and early 1990s, Norwegian marriages have fallen by more than 40 percent. What makes this particularly striking is that it has occurred during a period of significant population growth - meaning the rate of marriage per capita has fallen even more dramatically.

Code
if (!is.null(df_vital)) {
  # Separate marriages and divorces
  marriages <- df_vital |>
    filter(grepl("ekteskap|marriage", metric, ignore.case = TRUE))
  
  divorces <- df_vital |>
    filter(grepl("skilsmisse|divorce", metric, ignore.case = TRUE))
  
  # Find peak year for marriages
  peak_year <- marriages |>
    filter(value == max(value, na.rm = TRUE)) |>
    pull(year) |>
    first()
  
  peak_value <- marriages |>
    filter(year == peak_year) |>
    pull(value) |>
    first()
  
  recent_value <- marriages |>
    filter(year == max(year)) |>
    pull(value) |>
    first()
  
  recent_year <- marriages |>
    filter(year == max(year)) |>
    pull(year) |>
    first()
  
  p1 <- ggplot(marriages, aes(x = year, y = value)) +
    geom_area(fill = pal[2], alpha = 0.3) +
    geom_line(color = pal[2], linewidth = 1.2) +
    annotate("point", x = peak_year, y = peak_value, 
             size = 4, color = pal[5]) +
    annotate("text", x = peak_year, y = peak_value + 2000,
             label = paste0("Peak: ", comma(peak_value), " marriages\n(", peak_year, ")"),
             hjust = 0.5, size = 3.5, fontface = "bold") +
    annotate("segment", x = peak_year, xend = recent_year,
             y = peak_value, yend = recent_value,
             arrow = arrow(length = unit(0.3, "cm")),
             color = pal[7], linetype = "dashed", linewidth = 0.8) +
    annotate("text", x = recent_year - 2, y = (peak_value + recent_value)/2,
             label = paste0(round((recent_value - peak_value)/peak_value * 100, 1), "%\ndecline"),
             size = 4, fontface = "bold", color = pal[7]) +
    scale_y_continuous(labels = comma, limits = c(0, NA)) +
    labs(
      title = "The Disappearance of Norwegian Marriage",
      subtitle = paste0("Annual marriages have fallen ", 
                       round((peak_value - recent_value)/peak_value * 100, 1),
                       "% from their ", peak_year, " peak — a fundamental shift in how Norwegians form families"),
      caption = "Source: Statistics Norway (SSB), table 05803",
      x = NULL,
      y = "Number of marriages per year"
    ) +
    theme_minimal(base_size = 13) +
    theme(
      plot.title = element_text(face = "bold", size = 16),
      plot.subtitle = element_text(size = 11, color = "grey30", margin = margin(b = 15)),
      panel.grid.minor = element_blank(),
      plot.caption = element_text(color = "grey50", size = 9)
    )
  
  print(p1)
}

Marriage vs Divorce: A Changing Ratio

The relationship between marriages and divorces tells another story. While marriages have declined, divorces have remained relatively stable, fundamentally changing the ratio. In the 1970s, there were roughly five marriages for every divorce. Today, that ratio is approaching 2:1 in some years.

Code
if (!is.null(df_vital)) {
  # Calculate ratio
  ratio_data <- df_vital |>
    pivot_wider(names_from = metric, values_from = value) |>
    janitor::clean_names() |>
    mutate(
      marriages = inngatte_ekteskap,
      divorces = skilsmisser,
      ratio = marriages / divorces
    ) |>
    filter(!is.na(ratio), year >= 1980)
  
  p2 <- ggplot(ratio_data, aes(x = year, y = ratio)) +
    geom_line(color = pal[4], linewidth = 1.3) +
    geom_hline(yintercept = 2, linetype = "dashed", 
               color = pal[7], linewidth = 0.8) +
    annotate("text", x = 1985, y = 2.2,
             label = "2:1 ratio threshold",
             color = pal[7], fontface = "italic", size = 3.5) +
    geom_point(data = ratio_data |> filter(year == max(year)),
               aes(x = year, y = ratio),
               size = 4, color = pal[5]) +
    scale_y_continuous(breaks = seq(0, 6, 1)) +
    labs(
      title = "The Marriage-to-Divorce Ratio Has Collapsed",
      subtitle = "From 5 marriages per divorce in the 1980s to barely 2:1 today — marriage as an institution is weakening",
      caption = "Source: Statistics Norway (SSB), table 05803",
      x = NULL,
      y = "Marriages per divorce"
    ) +
    theme_minimal(base_size = 13) +
    theme(
      plot.title = element_text(face = "bold", size = 16),
      plot.subtitle = element_text(size = 11, color = "grey30", margin = margin(b = 15)),
      panel.grid.minor = element_blank(),
      plot.caption = element_text(color = "grey50", size = 9)
    )
  
  print(p2)
}
Error in `loadNamespace()`:
! there is no package called 'janitor'

The Waterfall: Decade-by-Decade Erosion

Breaking down the change by decade reveals that this isn’t a sudden shock but a persistent erosion of marriage as a social institution. Each decade since the peak has seen further declines, with the 2010s and 2020s accelerating the trend.

Code
if (!is.null(df_vital)) {
  # Calculate decade averages for marriages
  decade_data <- marriages |>
    mutate(
      decade = floor(year / 10) * 10,
      decade_label = paste0(decade, "s")
    ) |>
    group_by(decade, decade_label) |>
    summarise(avg_marriages = mean(value, na.rm = TRUE), .groups = "drop") |>
    arrange(decade)
  
  # Calculate changes for waterfall
  waterfall_data <- decade_data |>
    mutate(
      change = avg_marriages - lag(avg_marriages, default = first(avg_marriages)),
      end = cumsum(change),
      start = lag(end, default = 0),
      type = case_when(
        row_number() == 1 ~ "base",
        change > 0 ~ "increase",
        TRUE ~ "decrease"
      ),
      label_y = if_else(type == "decrease", start, end)
    )
  
  p3 <- ggplot(waterfall_data, aes(x = decade_label)) +
    geom_rect(aes(xmin = as.numeric(factor(decade_label)) - 0.4,
                  xmax = as.numeric(factor(decade_label)) + 0.4,
                  ymin = start, ymax = end, fill = type),
              color = "white", linewidth = 0.8) +
    geom_segment(data = waterfall_data |> filter(row_number() < n()),
                 aes(x = as.numeric(factor(decade_label)) + 0.4,
                     xend = as.numeric(factor(decade_label)) + 1.6,
                     y = end, yend = end),
                 linetype = "dashed", color = "grey50", linewidth = 0.5) +
    geom_text(aes(y = label_y, 
                  label = if_else(type == "base",
                                 comma(round(avg_marriages)),
                                 paste0(if_else(change > 0, "+", ""),
                                       comma(round(change))))),
              vjust = if_else(waterfall_data$type == "decrease", 1.5, -0.5),
              fontface = "bold", size = 3.5) +
    scale_fill_manual(
      values = c("base" = pal[1], "increase" = pal[3], "decrease" = pal[6]),
      guide = "none"
    ) +
    scale_y_continuous(labels = comma) +
    labs(
      title = "Decade-by-Decade Erosion of Norwegian Marriage",
      subtitle = "Each decade has seen fewer marriages than the last — a relentless decline spanning 50 years",
      caption = "Source: Statistics Norway (SSB), table 05803 | Average annual marriages per decade",
      x = NULL,
      y = "Average annual marriages"
    ) +
    theme_minimal(base_size = 13) +
    theme(
      plot.title = element_text(face = "bold", size = 16),
      plot.subtitle = element_text(size = 11, color = "grey30", margin = margin(b = 15)),
      panel.grid.minor = element_blank(),
      panel.grid.major.x = element_blank(),
      plot.caption = element_text(color = "grey50", size = 9)
    )
  
  print(p3)
}

Divorces: The Stable Companion to Declining Marriage

While marriages have plummeted, divorces have shown remarkable stability. This suggests that the decline in marriage isn’t driven by fears of divorce, but by a fundamental shift in how Norwegians approach committed relationships. The data shows divorce rates have actually remained relatively flat since the 1990s, hovering around 10,000 per year.

Code
if (!is.null(df_vital)) {
  # Prepare data for dual plot
  both_data <- df_vital |>
    mutate(
      type = case_when(
        grepl("ekteskap", metric, ignore.case = TRUE) ~ "Marriages",
        grepl("skilsmisse", metric, ignore.case = TRUE) ~ "Divorces",
        TRUE ~ "Other"
      )
    ) |>
    filter(type %in% c("Marriages", "Divorces"), year >= 1980)
  
  # Calculate indexed values (1990 = 100)
  indexed_data <- both_data |>
    group_by(type) |>
    mutate(
      base_value = value[year == 1990],
      indexed = (value / base_value) * 100
    ) |>
    ungroup()
  
  p4 <- ggplot(indexed_data, aes(x = year, y = indexed, color = type)) +
    geom_line(linewidth = 1.3) +
    geom_hline(yintercept = 100, linetype = "dashed", 
               color = "grey50", linewidth = 0.6) +
    annotate("text", x = 1982, y = 105,
             label = "1990 baseline = 100",
             color = "grey40", fontface = "italic", size = 3.5) +
    geom_point(data = indexed_data |> filter(year == max(year)),
               aes(x = year, y = indexed),
               size = 4) +
    geom_text(data = indexed_data |> filter(year == max(year)),
              aes(x = year + 1, y = indexed,
                  label = paste0(round(indexed), "\n(", comma(round(value)), ")")),
              hjust = 0, size = 3.5, fontface = "bold") +
    scale_color_manual(values = c("Marriages" = pal[2], "Divorces" = pal[6])) +
    scale_x_continuous(limits = c(1980, max(indexed_data$year) + 5)) +
    scale_y_continuous(breaks = seq(0, 150, 25)) +
    labs(
      title = "Two Diverging Paths: Marriage Collapses While Divorce Stabilizes",
      subtitle = "Indexed to 1990 baseline (=100) — marriages down 40%, divorces essentially flat",
      caption = "Source: Statistics Norway (SSB), table 05803",
      x = NULL,
      y = "Index (1990 = 100)",
      color = NULL
    ) +
    theme_minimal(base_size = 13) +
    theme(
      plot.title = element_text(face = "bold", size = 16),
      plot.subtitle = element_text(size = 11, color = "grey30", margin = margin(b = 15)),
      panel.grid.minor = element_blank(),
      legend.position = "top",
      legend.text = element_text(size = 11),
      plot.caption = element_text(color = "grey50", size = 9)
    )
  
  print(p4)
}

Key Findings

  • 40% decline from peak: Norwegian marriages have fallen from over 25,000 per year in the early 1990s to around 15,000 today, despite population growth of nearly 30% in the same period

  • Marriage rate collapse: Adjusted for population, the marriage rate per 1,000 inhabitants has fallen even more dramatically, from 5.5 in the 1980s to below 3.0 today

  • Stable divorces, falling marriages: While marriages have plummeted, divorces have remained around 10,000 per year, meaning the marriage-to-divorce ratio has shrunk from 5:1 to approximately 2:1

  • Persistent trend: Every decade since the 1990s has seen lower marriage numbers than the previous one — this is not a temporary dip but a fundamental transformation

  • Cohabitation revolution: The decline coincides with Norway’s embrace of samboerskap (cohabitation), which now offers many of the same legal protections as marriage, particularly for couples with children

The Bigger Picture

This isn’t just about wedding ceremonies and honeymoons. The decline of marriage as Norway’s dominant relationship structure has profound implications for everything from housing markets (couples buying earlier without waiting for marriage) to pension systems (designed around married couples) to child welfare policies (increasingly built around separated parents rather than married units).

Most strikingly, Norway has managed this transition with relatively little social conflict. Unlike in many countries where declining marriage rates spark heated political debate, Norway’s shift toward cohabitation has been largely accepted across the political spectrum. The state has adapted by extending legal protections to cohabiting couples, while traditional marriage continues for those who choose it — but increasingly as one option among several, rather than as the expected norm.

What we’re witnessing is the quiet end of marriage as a universal social institution in Norway, replaced by a more diverse landscape of relationship forms. The question for the coming decades isn’t whether this trend will reverse — all evidence suggests it won’t — but how Norwegian society continues to adapt its institutions, from tax policy to inheritance law, to this new reality.