diff --git a/frontend/src/lang/en.json b/frontend/src/lang/en.json
index 929a2b0ce6c9c0f9f7e72c2f56302384e01e3770..5816857a89f35af2a352be3c81ac779fa5bbeb17 100644
--- a/frontend/src/lang/en.json
+++ b/frontend/src/lang/en.json
@@ -11,6 +11,9 @@
 		"tutor": {
 			"profile": "My profile",
 			"update": "Update",
+			"updatedSuccessfully": "Profile updated successfully",
+			"updateError": "Error updating profile",
+			"userNotFound": "User not found",
 			"selectGender": "Select your gender",
 			"bio": "Biography",
 			"availabilities": "Availabilities"
diff --git a/frontend/src/lang/fr.json b/frontend/src/lang/fr.json
index 47c3c1570c9782714634456b8057c132e429be41..9e6b44659da57b0bf18096a24b27b924df24f7bc 100644
--- a/frontend/src/lang/fr.json
+++ b/frontend/src/lang/fr.json
@@ -16,6 +16,9 @@
 		},
 		"tutor": {
 			"profile": "Mon profil",
+			"updatedSuccessfully": "Profil mis à jour avec succès",
+			"updateError": "Erreur lors de la mise à jour du profil",
+			"userNotFound": "Utilisateur non trouvé",
 			"update": "Confirmer",
 			"selectGender": "Sélectionnez votre genre",
 			"bio": "Biographie",
diff --git a/frontend/src/routes/tutor/profile/+page.svelte b/frontend/src/routes/tutor/profile/+page.svelte
index 3825c59ce19ea7299f0c8e2b2008ece338f32df0..5ba2a3d732088a4fb724f4c6e16ed2c019fcbbdf 100644
--- a/frontend/src/routes/tutor/profile/+page.svelte
+++ b/frontend/src/routes/tutor/profile/+page.svelte
@@ -1,50 +1,63 @@
 <script lang="ts">
 	import { t } from '$lib/services/i18n';
+	import { patchUserAPI } from '$lib/api/users';
 	import type { PageData } from './$types';
 
 	let { data }: { data: PageData } = $props();
 
-	const formatBirthdate = (dateStr: string | undefined): string => {
+	const formatBirthdate = (dateStr: string | Date | undefined): string => {
 		if (!dateStr) return '';
-		const isoDate = dateStr.split('T')[0];
-		if (/^\d{4}-\d{2}-\d{2}$/.test(isoDate)) return isoDate;
-		const [day, month, year] = dateStr.split('/');
-		if (year?.length === 4) {
-			return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
+		const date = new Date(dateStr);
+		if (!isNaN(date.getTime())) {
+			return date.toISOString().split('T')[0];
+		}
+		if (typeof dateStr === 'string') {
+			const [day, month, year] = dateStr.split('/');
+			if (year?.length === 4) {
+				return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
+			}
 		}
-
 		return '';
 	};
 
 	let email = data.user?.email || '';
 	let nickname = data.user?.nickname || '';
-	let birthdate = formatBirthdate(
-		data.user?.birthdate ? data.user.birthdate.toString() : undefined
-	);
+	let birthdate = formatBirthdate(data.user?.birthdate ?? undefined);
 	let gender = data.user?.gender || '';
 	let bio = data.user?.bio || '';
 	let availabilities = data.user?.availabilities
 		? JSON.stringify(data.user.availabilities, null, 2)
 		: '';
 
-	function updateProfile() {
-		let parsedAvailabilities;
+	async function updateProfile() {
 		try {
-			parsedAvailabilities = availabilities ? JSON.parse(availabilities) : [];
+			const parsedAvailabilities = availabilities ? JSON.parse(availabilities) : [];
+			console.log('birth:', new Date(birthdate).toISOString());
+			const updateData = {
+				email,
+				nickname,
+				birthdate,
+				gender,
+				bio,
+				availabilities: parsedAvailabilities
+			};
+
+			let success = false;
+			if (data.user) {
+				success = await patchUserAPI(fetch, data.user.id, updateData);
+			} else {
+				throw new Error($t('header.tutor.userNotFound'));
+			}
+			console.log('Update success:', success);
+			if (success) {
+				alert($t('header.tutor.updatedSuccessfully'));
+			} else {
+				alert($t('header.tutor.updateError'));
+			}
 		} catch (error) {
-			alert($t('errors.invalidAvailabilities'));
-			return;
+			console.error('Update failed:', error);
+			alert(error instanceof Error ? error.message : $t('errors.updateFailed'));
 		}
-
-		console.log({
-			email,
-			nickname,
-			birthdate,
-			gender,
-			bio,
-			availabilities: parsedAvailabilities
-		});
-		alert($t('profile.updatedSuccessfully'));
 	}
 </script>
 
@@ -132,10 +145,7 @@
 			></textarea>
 		</div>
 
-		<button
-			type="submit"
-			class="w-full bg-indigo-600 hover:bg-indigo-700 text-white font-bold py-2 px-4 rounded-md shadow-md focus:outline-none focus:ring focus:ring-indigo-200"
-		>
+		<button type="submit" class="button">
 			{$t('header.tutor.update')}
 		</button>
 	</form>