
If you'd like to get an estimate of your written or spoken French proficiency, take one of these tests or sign up for your free oral assessment.
Test Your French Level
Have your oral skills assessed during a free 20-minute conversation by booking a slot on the calendar below.
https://calendar.app.google/TqNURPzdJPFyJ85fA
If you’d like to know your level of proficiency in written or spoken French, here’s a test to find out if you’re at the B2 or C1 level:
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Test de positionnement FLE (B2-C1)</title>
<style>
:root {
--primary-color: #2563eb;
--primary-hover: #1d4ed8;
--bg-color: #f8fafc;
--card-bg: #ffffff;
--text-color: #1e293b;
--border-color: #e2e8f0;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: var(--bg-color);
color: var(--text-color);
line-height: 1.6;
margin: 0;
padding: 20px;
}
.container {
max-width: 800px;
margin: 0 auto;
background: var(--card-bg);
padding: 40px;
border-radius: 12px;
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
}
h1 {
color: var(--primary-color);
text-align: center;
margin-bottom: 30px;
font-size: 2rem;
}
.intro {
margin-bottom: 40px;
padding-bottom: 20px;
border-bottom: 2px solid var(--border-color);
font-size: 1.1rem;
}
.section-title {
background: #eff6ff;
color: var(--primary-color);
padding: 10px 15px;
border-radius: 6px;
margin-top: 30px;
font-weight: bold;
}
.question-block {
margin-bottom: 25px;
padding: 20px;
border: 1px solid var(--border-color);
border-radius: 8px;
background: #fafafa;
}
.question-text {
font-weight: 600;
margin-bottom: 15px;
}
.options-list {
list-style: none;
padding: 0;
margin: 0;
}
.option-item {
margin-bottom: 10px;
}
.option-item label {
display: flex;
align-items: center;
padding: 10px;
border: 1px solid var(--border-color);
border-radius: 6px;
cursor: pointer;
background: #fff;
transition: background 0.2s;
}
.option-item label:hover {
background: #f1f5f9;
}
.option-item input {
margin-right: 12px;
transform: scale(1.2);
}
.btn-submit {
display: block;
width: 100%;
padding: 15px;
background: var(--primary-color);
color: white;
border: none;
border-radius: 8px;
font-size: 1.2rem;
font-weight: bold;
cursor: pointer;
margin-top: 40px;
transition: background 0.2s;
}
.btn-submit:hover {
background: var(--primary-hover);
}
#result-zone {
display: none;
margin-top: 30px;
padding: 30px;
border-radius: 8px;
background: #f0fdf4;
border: 2px solid #bbf7d0;
}
.score-display {
font-size: 1.8rem;
font-weight: bold;
color: #166534;
text-align: center;
margin-bottom: 20px;
}
.conclusion-box {
background: #ffffff;
padding: 20px;
border-left: 4px solid var(--primary-color);
border-radius: 4px;
margin-top: 25px;
box-shadow: 0 1px 3px rgba(0,0,0,0.05);
}
.conclusion-box a {
color: var(--primary-color);
text-decoration: underline;
font-weight: bold;
}
</style>
</head>
<body>
<div class="container">
<h1>Test de niveau FLE (B2 - C1)</h1>
<div class="intro">
<p><strong>Consigne :</strong> Répondez aux 40 questions suivantes en choisissant la seule bonne réponse possible. Prenez votre temps, l'évaluation de votre niveau s'affichera à la fin du test.</p>
</div>
<form id="quiz-form">
<div class="section-title">Partie 1 : Grammaire et Syntaxe</div>
<div id="grammar-questions"></div>
<div class="section-title">Partie 2 : Lexique et Expressions Idiomatiques</div>
<div id="lexicon-questions"></div>
<button type="button" class="btn-submit" onclick="calculateScore()">Valider mes réponses</button>
</form>
<div id="result-zone">
<div class="score-display" id="score-text"></div>
<div id="interpretation-text" style="font-size: 1.1rem; margin-bottom: 20px;"></div>
<div class="conclusion-box">
Merci de m'envoyer votre résultat et vos éventuelles questions à mon adresse mail :
<strong>pascal.rabevolo@gmail.com</strong> ainsi qu'un lien vers mon site web :
<a href="https://pascal-rabevolo.fr" target="_blank">pascal-rabevolo.fr</a>
</div>
</div>
</div>
<script>
const questions = [
// GRAMMAIRE
{ q: "Bien qu'il ________ tous les efforts possibles, il n'a pas réussi à la convaincre.", o: ["a fait", "fasse", "ait fait", "faisait"], a: 2 },
{ q: "Si vous ________ me prévenir plus tôt, j'aurais pu réorganiser mon emploi du temps.", o: ["auriez pu", "aviez pu", "auriez su", "eussiez pu"], a: 1 },
{ q: "C'est un dossier épineux ________ il faudra consacrer beaucoup de temps.", o: ["auquel", "dont", "de quoi", "auquel lequel"], a: 0 },
{ q: "Quoi qu'il ________ , ne prenez pas ses remarques au premier degré.", o: ["dit", "dise", "dira", "a dit"], a: 1 },
{ q: "Je ne pense pas qu'il ________ nécessaire de revenir sur cette décision.", o: ["est", "soit", "sera", "était"], a: 1 },
{ q: "Les mesures ________ par le gouvernement se sont révélées inefficaces.", o: ["pris", "prises", "prirent", "prise"], a: 1 },
{ q: "Elle s'est ________ les mains avant de passer à table.", o: ["lavé", "lavée", "lavées", "lavés"], a: 0 },
{ q: "________ que vous soyez fatigué, nous devons terminer ce rapport ce soir.", o: ["Malgré", "Même si", "Pourvu", "Quelque"], a: 3 },
{ q: "Il agit comme s'il ________ le patron de cette entreprise.", o: ["est", "soit", "était", "serait"], a: 2 },
{ q: "________ de propositions pertinentes, la réunion a été écourtée.", o: ["Faute", "À cause", "Grâce", "Sous prétexte"], a: 0 },
{ q: "Je cherche un secrétaire qui ________ parler couramment trois langues.", o: ["sait", "sache", "saura", "savait"], a: 1 },
{ q: "Les livres que j'ai ________ lire à mes étudiants sont très denses.", o: ["fait", "faits", "faite", "faites"], a: 0 },
{ q: "________ que soient vos arguments, ils ne me feront pas changer d'avis.", o: ["Quels", "Quelles", "Quelque", "Quoique"], a: 1 },
{ q: "Il s'en est fallu de ________ qu'il ne rate son train.", o: ["peu", "rien", "beaucoup", "trop"], a: 0 },
{ q: "Mieux vaut prévenir ________ guérir.", o: ["que de", "que", "plutôt de", "à"], a: 0 },
{ q: "Je doute fort qu'il ________ à l'heure compte tenu des embouteillages.", o: ["vient", "vienne", "viendra", "venait"], a: 1 },
{ q: "Il a refusé de participer au projet, ________ je m'attendais un peu.", o: ["ce dont", "ce à quoi", "de quoi", "ce que"], a: 1 },
{ q: "Pourriez-vous me prêter ce livre une fois que vous le ________ ?", o: ["lisez", "aurez lu", "liras", "auriez lu"], a: 1 },
{ q: "C'est la plus belle exposition que j' ________ vue cette année.", o: ["ai", "aie", "aurais", "avais"], a: 1 },
{ q: "Les deux amies se sont ________ de longs messages tout au long de l'été.", o: ["envoyé", "envoyées", "envoyés", "envoyer"], a: 0 },
// LEXIQUE
{ q: "Face à cette situation imprévue, il a dû faire preuve de ________.", o: ["l'engouement", "sagacité", "désinvolture", "parcimonie"], a: 1 },
{ q: "Travailler d'arrache-pied signifie :", o: ["Travailler avec beaucoup d'efforts et d'intensité", "Travailler à contrecœur", "Ne pas finir son travail", "Travailler en équipe"], a: 0 },
{ q: "Son discours était si ________ que personne n'a osé l'interrompre.", o: ["rébarbatif", "loquace", "percutant", "anodin"], a: 2 },
{ q: "Cette décision économique a eu des effets ________ sur les petites entreprises.", o: ["délétères", "débonnaires", "dérisoires", "désuets"], a: 0 },
{ q: "« Mettre la charrue avant les bœufs » signifie :", o: ["Faire les choses dans le désordre, trop vite", "Être très patient", "Faire preuve de courage", "Travailler la terre efficacement"], a: 0 },
{ q: "Il a dépensé tout son héritage avec ________.", o: ["rigueur", "prodigalité", "austérité", "intégrité"], a: 1 },
{ q: "Ses explications étaient particulièrement ________ , j'ai tout compris immédiatement.", o: ["confuses", "limpides", "alambiquées", "obsolètes"], a: 1 },
{ q: "Quand on dit d'une personne qu'elle est « pointilleuse », cela signifie qu'elle est :", o: ["Très exigeante sur les détails", "Toujours en retard", "De mauvaise humeur", "Très généreuse"], a: 0 },
{ q: "Le projet a été abandonné car les coûts étaient ________.", o: ["exorbitants", "insignifiants", "abordables", "dérisoires"], a: 0 },
{ q: "L'expression « élucider un mystère » signifie :", o: ["Le rendre plus compliqué", "Le résoudre, le clarifier", "L'ignorer volontairement", "En inventer un nouveau"], a: 1 },
{ q: "Sa remarque est totalement ________ , elle n'a aucun rapport avec notre sujet.", o: ["pertinente", "congrue", "intempestive", "incongrue"], a: 3 },
{ q: "Un argument « imparable » est un argument :", o: ["Auquel on ne peut pas répliquer", "Qui est facile à contredire", "Qui manque de logique", "Qui est trop long"], a: 0 },
{ q: "Elle a un caractère ________ , elle s'emporte pour un rien.", o: ["placide", "soupe au lait", "flegmatique", "imperturbable"], a: 1 },
{ q: "Cette loi est tombée en ________ , elle n'est plus du tout appliquée.", o: ["désuétude", "vigueur", "décadence", "abrogation"], a: 0 },
{ q: "Agir « à l'insu de quelqu'un » signifie :", o: ["Avec son accord explicite", "Sans qu'il le sache", "Devant lui", "En l'imitant"], a: 1 },
{ q: "Le directeur a fait une allusion ________ aux futurs changements dans l'équipe.", o: ["explicite", "voilée", "flagrante", "formelle"], a: 1 },
{ q: "« Avoir l'embarras du choix » signifie :", o: ["Ne pas avoir le choix", "Avoir trop d'options possibles et hésiter", "Faire un mauvais choix", "Regretter sa décision"], a: 1 },
{ q: "Face aux critiques, il est resté de ________.", o: ["marbre", "pierre", "bois", "fer"], a: 0 },
{ q: "Un travail « de longue haleine » est un travail :", o: ["Qui demande beaucoup de temps et de patience", "Très fatigant physiquement", "Très rapide à terminer", "Mal payé"], a: 0 },
{ q: "Elle a su ________ les tensions au sein de l'équipe grâce à sa diplomatie.", o: ["attiser", "exacerber", "apaiser", "declencher"], a: 2 }
];
function generateQuiz() {
const grammarContainer = document.getElementById('grammar-questions');
const lexiconContainer = document.getElementById('lexicon-questions');
questions.forEach((question, index) => {
const questionBlock = document.createElement('div');
questionBlock.className = 'question-block';
let html = `<div class="question-text">${index + 1}. ${question.q}</div>`;
html += `<ul class="options-list">`;
question.o.forEach((option, oIndex) => {
html += `
<li class="option-item">
<label>
<input type="radio" name="q${index}" value="${oIndex}">
${option}
</label>
</li>
`;
});
html += `</ul>`;
questionBlock.innerHTML = html;
if (index < 20) {
grammarContainer.appendChild(questionBlock);
} else {
lexiconContainer.appendChild(questionBlock);
}
});
}
function calculateScore() {
let score = 0;
questions.forEach((question, index) => {
const selected = document.querySelector(`input[name="q${index}"]:checked`);
if (selected && parseInt(selected.value) === question.a) {
score++;
}
});
const scoreText = document.getElementById('score-text');
const interpretationText = document.getElementById('interpretation-text');
const resultZone = document.getElementById('result-zone');
scoreText.innerHTML = `Votre score : ${score} / 40`;
if (score < 20) {
interpretationText.innerHTML = "<strong>Niveau B1 ou B2 fragile :</strong> Les structures de la syntaxe complexe doivent encore être consolidées pour stabiliser le niveau avancé.";
} else if (score <= 32) {
interpretationText.innerHTML = "<strong>Niveau B2 solide :</strong> Bonne maîtrise générale de la langue. Le passage vers le niveau C1 demande de peaufiner les structures stylistiques plus complexes et le lexique idiomatique.";
} else {
interpretationText.innerHTML = "<strong>Niveau C1 validé ou en excellente voie !</strong> Vous possédez une perception très fine des nuances de la langue française ainsi qu'une excellente maîtrise syntaxique.";
}
resultZone.style.display = 'block';
resultZone.scrollIntoView({ behavior: 'smooth' });
}
// Initialisation du test
generateQuiz();
</script>
</body>
</html>
