Chômage, taux de chômage par sexe et âge (sens BIT) (1975-)

Données - INSEE

Info

Last observation: 2026-Q1

First observation: 1975-Q1

Number of observations: 19 338

Last data update: 23 jul 2026, 22:44. Last compile: 24 jul 2026, 05:24

Structure

Données sur l’emploi

source dataset Title .html .rData
insee CHOMAGE-TRIM-NATIONAL Chômage, taux de chômage par sexe et âge (sens BIT) (1975-) 2026-07-23 2026-07-23
insee CNA-2014-EMPLOI Emploi intérieur, durée effective travaillée et productivité horaire 2026-07-23 2026-07-22
insee DEMANDES-EMPLOIS-NATIONALES Demandeurs d'emploi inscrits à Pôle Emploi 2026-07-23 2026-07-23
insee EMPLOI-BIT-TRIM Emploi, activité, sous-emploi par secteur d’activité (sens BIT) 2026-07-23 2026-07-23
insee EMPLOI-SALARIE-TRIM-NATIONAL Estimations d'emploi salarié par secteur d'activité 2026-07-23 2026-07-23
insee TAUX-CHOMAGE Taux de chômage localisé 2026-07-23 2026-07-23
insee TCRED-EMPLOI-SALARIE-TRIM Estimations d'emploi salarié par secteur d'activité et par département 2026-07-23 2026-07-23

Data on employment

source dataset Title .html .rData
bls jt NA NA NA
bls la NA NA NA
bls ln NA NA NA
eurostat nama_10_a10_e Employment by A*10 industry breakdowns 2026-07-23 2026-07-23
eurostat nama_10_a64_e National accounts employment data by industry (up to NACE A*64) 2026-07-23 2026-07-23
eurostat namq_10_a10_e Employment A*10 industry breakdowns 2026-07-23 2026-07-23
eurostat une_rt_m Unemployment by sex and age – monthly data 2026-07-23 2026-07-23
oecd ALFS_EMP Employment by activities and status (ALFS) 2024-04-16 2025-05-24
oecd EPL_T Strictness of employment protection – temporary contracts 2026-07-23 2023-12-10
oecd LFS_SEXAGE_I_R LFS by sex and age - indicators 2026-07-23 2024-04-15
oecd STLABOUR Short-Term Labour Market Statistics 2026-07-23 2025-01-17

Halo du chomage

Ensemble

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(IDBANK %in% c("010605056", 
                       "010605048",
                       "010605049",
                       "010605050")) %>%
  select(AGE, TITLE_FR, TIME_PERIOD, OBS_VALUE) %>%
  mutate(OBS_VALUE = OBS_VALUE %>% as.numeric,
         TITLE_FR = TITLE_FR %>% gsub("\\(en milliers\\) - France hors Mayotte - Données CVS", "", .),
         TITLE_FR = TITLE_FR %>% gsub("Personnes dans le halo autour du chômage - ", "", .)) %>%
  quarter_to_date %>%
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE_FR, linetype = TITLE_FR)) +
  
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.6, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(0, 9000, 500),
                     labels = dollar_format(accuracy = 1, prefix = "", su = " K")) +
  ylab("Halo du Chômage (en milliers)") + xlab("")

Inactifs

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR %in% c("CHLODU", "HALO_1", "HALO_2", "HALO_3"),
         REF_AREA == "FR-D976") %>%
  quarter_to_date %>%
  
  mutate(Indicateur = gsub("Personnes dans le halo autour du chômage : ", "", Indicateur)) %>%
  arrange(date) %>%
  select(date, OBS_VALUE, INDICATEUR, Indicateur) %>%
  ggplot() + ylab("Halo du Chômage (en milliers)") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur, linetype = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.55, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(0, 9000, 200),
                     labels = dollar_format(accuracy = 1, prefix = ""),
                     limits = c(0, 2000))

Nombre de chômeurs

Tous

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTCHC",
         AGE == "00-",
         SEXE == "0") %>%
  quarter_to_date %>%
  
  ggplot() + theme_minimal() + ylab("Nombre de chômeurs") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.8, 0.15),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(0, 3000, 500),
                     labels = dollar_format(accuracy = 1, pre = "", su = " K"))

Taux de chômage

Tous

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         AGE == "00-",
         SEXE == "0") %>%
  quarter_to_date %>%
  
  mutate(OBS_VALUE = OBS_VALUE/100) %>%
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.8, 0.15),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 20, 1),
                     labels = percent_format(accuracy = 1)) + 
  geom_hline(yintercept = 0.05, linetype = "dashed")

1990-

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         AGE == "00-",
         SEXE == "0") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1990-01-01")) %>%
  
  mutate(OBS_VALUE = OBS_VALUE/100) %>%
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.8, 0.15),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 20, 1),
                     labels = percent_format(accuracy = 1))

Genre

Tous

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         REF_AREA == "FR-D976",
         AGE == "00-") %>%
  quarter_to_date %>%
  
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Sexe, linetype = Sexe)) +
  scale_color_manual(values = c("black", "red", "blue")) +
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.8, 0.3),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 20, 1),
                     labels = percent_format(accuracy = 1))

2005-

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         REF_AREA == "FR-D976",
         AGE == "00-") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2005-01-01")) %>%
  
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Sexe, linetype = Sexe)) +
  scale_color_manual(values = c("black", "red", "blue")) +
  scale_x_date(breaks = seq(1920, 2025, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.85, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 20, .5),
                     labels = percent_format(accuracy = .1))

2010-

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         REF_AREA == "FR-D976",
         AGE == "00-") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2010-01-01")) %>%
  
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Sexe, linetype = Sexe)) +
  scale_color_manual(values = c("black", "red", "blue")) +
  scale_x_date(breaks = seq(1920, 2025, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.8, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 20, .5),
                     labels = percent_format(accuracy = .1))

Nombre de chômeurs

All

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR %in% c("CTCHC", "CHLODU"),
         SEXE == "0",
         AGE == "00-24") %>%
  quarter_to_date %>%
  
  ggplot() + theme_minimal() + ylab("Nombre de chômeurs") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE*1000, color = Ref_area)) +
  
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.8, 0.88),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 1000*seq(100, 1100, 50),
                     labels = dollar_format(pre = ""))

1990-

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTCHC",
         SEXE == "0",
         AGE == "00-24") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1990-01-01")) %>%
  
  ggplot() + theme_minimal() + ylab("Nombre de chômeurs") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE*1000, color = Ref_area)) +
  
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.88),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 1000*seq(100, 1100, 50),
                     labels = dollar_format(pre = ""))

Age (Tous)

Tous

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         REF_AREA == "FR-D976",
         SEXE == "0") %>%
  quarter_to_date %>%
  
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Age)) +
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.12, 0.88),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 40, 5),
                     labels = percent_format(accuracy = 1))

2005-

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         REF_AREA == "FR-D976",
         SEXE == "0") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2005-01-01")) %>%
  
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Age)) +
  
  scale_x_date(breaks = seq(1920, 2025, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.9, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 40, 2),
                     labels = percent_format(accuracy = 1))

2010-

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         REF_AREA == "FR-D976",
         SEXE == "0") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2005-01-01")) %>%
  
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Age)) +
  
  scale_x_date(breaks = seq(1920, 2025, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.9, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 40, 2),
                     labels = percent_format(accuracy = 1))

2017-

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         REF_AREA == "FR-D976",
         SEXE == "0") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2017-01-01")) %>%
  
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Age)) +
  
  scale_x_date(breaks = "6 months",
               labels = date_format("%b %y")) +
  theme(legend.position = c(0.9, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 40, 2),
                     labels = percent_format(accuracy = 1))

Age (sauf - de 25 ans)

Tous

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         REF_AREA == "FR-D976",
         SEXE == "0",
         AGE != "00-24") %>%
  quarter_to_date %>%
  
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Age)) +
  
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 40, 1),
                     labels = percent_format(accuracy = 1),
                     limits = c(0, 0.13))

2005-

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         REF_AREA == "FR-D976",
         SEXE == "0",
         AGE != "00-24") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2005-01-01")) %>%
  
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Age)) +
  
  scale_x_date(breaks = seq(1920, 2025, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.9, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 40, 1),
                     labels = percent_format(accuracy = 1))

2010-

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         REF_AREA == "FR-D976",
         SEXE == "0",
         AGE != "00-24") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2005-01-01")) %>%
  
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Age)) +
  
  scale_x_date(breaks = seq(1920, 2025, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.9, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 40, 1),
                     labels = percent_format(accuracy = 1))

2017-

Code
`CHOMAGE-TRIM-NATIONAL` %>%
  filter(INDICATEUR == "CTTXC",
         REF_AREA == "FR-D976",
         SEXE == "0",
         AGE != "00-24") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2017-04-01")) %>%
  
  ggplot() + theme_minimal() + ylab("Taux de chômage (%)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = Age)) +
  
  scale_x_date(breaks = seq(1920, 2025, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.9, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 40, 1),
                     labels = percent_format(accuracy = 1))