Top statutory personal income tax rate and top marginal tax rates for employees - TABLE_I7

Data - OECD

Info

Last observation: A: 2022 (N = 228)

First observation: A: 2000 (N = 228)

Last data update: 02 aoû 2026, 09:15. Last compile: 18 aoû 2026, 03:29

Structure

Top Personal Income Tax Rates

Germany

Code
TABLE_I7 |>
  filter(COU == "DEU",
         TAX %in% c("PERS_ITAX", "PER_ARATE", "TOP_TRATE")) |>
  year_to_date() |>
  left_join(TABLE_I7_var$TAX |>
              setNames(c("TAX", "Tax")), by = "TAX") |>
  ggplot() + geom_line(aes(x = date, y = obsValue/100, color = Tax)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.65, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 70, 5),
                     labels = percent_format(accuracy = 1),
                     limits = c(0, 0.7)) + 
  ylab("Tax Rate (%)") + xlab("")

France

Code
TABLE_I7 |>
  filter(COU == "FRA",
         TAX %in% c("PERS_ITAX", "PER_ARATE", "TOP_TRATE")) |>
  year_to_date() |>
  left_join(TABLE_I7_var$TAX |>
              setNames(c("TAX", "Tax")), by = "TAX") |>
  ggplot() + geom_line(aes(x = date, y = obsValue/100, color = Tax)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.65, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 70, 5),
                     labels = percent_format(accuracy = 1),
                     limits = c(0, 0.7)) + 
  ylab("Tax Rate (%)") + xlab("")