Dans les entrailles de l'algorithme le plus addictif au monde
Inside the world's most addictive algorithm
19 prédictions par vidéo
19 predictions per video
16 sources de retrieval
16 retrieval sources
Formule quadratique eCPM
Quadratic eCPM formula
9 modèles ML dédiés
9 dedicated ML models
En installant TikTok v44.2.1 dans un émulateur Android et en interceptant les échanges réseau entre l'application et ses serveurs, nous avons pu reconstituer le fonctionnement interne de quatre systèmes de classement distincts. Pas la théorie, pas les brevets : les configs réelles de production, les noms de modèles, les seuils, les formules.
Le pipeline principal fonctionne en 6 étapes, du serveur à votre écran. Au cœur du système, un modèle unique (v1054) prédit 19 comportements simultanément pour chaque vidéo : la probabilité que vous likiez, que vous partagiez, que vous commentiez, que vous quittiez, que vous regardiez jusqu'au bout. La formule de scoring combine ces prédictions selon des exposants différenciés qui révèlent une hiérarchie claire : le temps de visionnage pèse plus que les likes (exposant 1.08 vs 0.84), et la "valeur intrinsèque du contenu" reçoit un multiplicateur de x5.
Le moteur de recherche TikTok a son propre pipeline, ses propres modèles, et un LLM de pertinence (décembre 2025). Ce n'est pas un sous-ensemble du feed. Le premier résultat est évalué par un modèle dédié qui optimise pour que vous ne changiez pas de requête.
La publicité est régie par une formule quadratique de seuils : seules les pubs les plus lucratives ont le droit d'apparaître en haut du feed. Sur mobile, l'espacement minimum entre deux pubs est d'une seule vidéo. Les pubs peuvent être remontées dans le feed, jamais descendues.
En e-commerce, le taux de clic est élevé à la puissance 4 dans la formule de scoring. Doubler votre CTR multiplie votre score par 16. Les "key sellers" reçoivent un boost de x10 000 dans le rawrank, un traitement préférentiel non-transparent qui n'apparaît dans aucun programme officiel de TikTok Shop.
Ce document présente ces quatre surfaces une par une, avec les données brutes, les formules et les implications concrètes pour les créateurs, les spécialistes SEO et les marketeurs e-commerce.
By installing TikTok v44.2.1 in an Android emulator and intercepting the network traffic between the application and its servers, we were able to reconstruct the inner workings of four distinct ranking systems. Not theory, not patents: actual production configs, model names, thresholds, formulas.
The For You feed's main pipeline works in 6 steps, from server to your screen. At the heart of the system, a single model (v1054) predicts 19 behaviors simultaneously for each video: the probability you'll like, share, comment, leave, watch to the end. The scoring formula combines these predictions with differentiated exponents that reveal a clear hierarchy: watch time weighs more than likes (exponent 1.08 vs 0.84), and "intrinsic content value" gets a x5 multiplier.
TikTok's search engine has its own pipeline, its own models, and a relevance LLM (December 2025). It's not a subset of the feed. The first result is evaluated by a dedicated model that optimizes for you not changing your query.
Advertising is governed by a quadratic threshold formula: only the most lucrative ads are allowed to appear at the top of the feed. On mobile, the minimum spacing between two ads is a single video. Ads can be moved up in the feed, never down.
In e-commerce, click-through rate is raised to the power of 4 in the scoring formula. Doubling your CTR multiplies your score by 16. "Key sellers" receive a x10,000 boost in rawrank, a non-transparent preferential treatment that doesn't appear in any official TikTok Shop program.
This document presents these four surfaces one by one, with raw data, formulas, and concrete implications for creators, SEO specialists, and e-commerce marketers.
Émulateur Android (Pixel 7 AVD, Android 14). Installation de l'APK, extraction des fichiers internes, configs de production et modèles ML.
Android emulator (Pixel 7 AVD, Android 14). APK installation, internal file extraction, production configs and ML models.
Interception du trafic réseau sur tiktok.com, sessions connectées et non-connectées. API JSON, paramètres A/B, ciblage publicitaire.
Network traffic interception on tiktok.com, logged-in and anonymous sessions. JSON API, A/B parameters, ad targeting.
207 359 classes Java analysées. Modèles ML, formules de scoring, pipelines de ranking, taxonomies et paramètres de configuration.
207,359 Java classes analyzed. ML models, scoring formulas, ranking pipelines, taxonomies and configuration parameters.
Limite méthodologique : cette analyse porte sur la version US de TikTok (v44.2.1, mars 2026). Les algorithmes serveur restent une boîte noire - nous ne voyons que les entrées et sorties du pipeline. Les poids de scoring on-device sont injectés par le serveur et peuvent changer à tout moment via A/B test. Les données présentées sont un instantané, pas une vérité permanente.
Methodological limitation: this analysis covers the US version of TikTok (v44.2.1, March 2026). Server-side algorithms remain a black box - we only see the pipeline inputs and outputs. On-device scoring weights are injected by the server and can change at any time via A/B testing. The data presented is a snapshot, not a permanent truth.
Comment TikTok classe les vidéos que vous voyez
How TikTok ranks the videos you see
6 étapes, 9 systèmes de retrieval, 5 listes de ranking parallèles
6 steps, 9 retrieval systems, 5 parallel ranking lists
9 systèmes de retrieval en parallèle : Two-Tower NN (Viking), BERT 2-hop, retrieval depuis vos recherches antérieures, tags, compteurs
9 retrieval systems in parallel: Two-Tower NN (Viking), BERT 2-hop, retrieval from your past searches, tags, counters
9 sources
Filtrage de sécurité (ANSA ban), risk query, scoring CTCVR brut
Safety filtering (ANSA ban), risk query, raw CTCVR scoring
FiltreFilter
Modèle v1054 : 19 prédictions simultanées par vidéo. Scoring par value tree avec 2 gammas + 1 multiplicateur
Model v1054: 19 simultaneous predictions per video. Value tree scoring with 2 gammas + 1 multiplier
19 targets
21 macro-catégories (CT 100-120), sous-catégories (divIds), labels lisibles. Évite 2 items du même bucket consécutifs
21 macro-categories (CT 100-120), sub-categories (divIds), human-readable labels. Prevents 2 consecutive items from the same bucket
21 CT
Beam search diversity (beta=0,02), mix multi-canal (video, article, live, user, musique), gouvernance (-1 000 000 pour contenu problematique)
Beam search diversity (beta=0.02), multi-channel mix (video, article, live, user, music), governance (-1,000,000 for problematic content)
5 canaux5 channels
tiktok_showtime_ad_gap, fonction : adjust_items)tiktok_showtime_ad_gap, function: adjust_items)will_enter_comment, 122 signaux répartis en 12 catégories)will_enter_comment, 122 signals across 12 categories)30+ signaux comportementaux renvoyés au serveur par vidéo (duree, play_delta, share_delta, pre_item_playtime...). Délai de batching : 200 ms, seuil minimum : 2 événements.
30+ behavioral signals sent back to the server per video (duree, play_delta, share_delta, pre_item_playtime...). Batching delay: 200 ms, minimum threshold: 2 events.
| # | Système | System | Architecture | Description | |
|---|---|---|---|---|---|
| 1 | sar_viking_two_tower_recall | Two-Tower NN (Viking) | Retrieval augmenté par la recherche | Search-Augmented Retrieval | |
| 2 | v2q_two_tower_recall | Two-Tower NN | Matching vidéo-vers-requête | Video-to-Query matching | |
| 3 | bert_viking_two_hop_recall | BERT + graphe 2-hop | Recall sémantique profond | Deep semantic recall | |
| 4 | search_result_darwin_recall | Darwin | Recall depuis vos recherches antérieures | Recall from your past searches | |
| 5 | shortterm_manual_attribute_recall | Règles | Rules | Hashtags, sons, attributs manuels | Hashtags, sounds, manual attributes |
| 6 | video_generate_recall | Génératif | Generative | Basee sur le contenu génère | Based on generated content |
| 7 | video_top_counter_recall | Compteurs | Counters | Popularité (vues/likes) | Popularity (views/likes) |
| 8 | global_video_top_counter_recall | Charts | Top global | ||
| 9 | tako_merge_feedbar_recall | Tako (IA) | Fusion de tous les canaux | Merges all channels |
Il n'existe pas un classement unique mais cinq listes parallèles. L'écart entre la position serveur et la position finale mesure l'influence du reranking client - donnée critique pour le re-entraînement des modèles.
There isn't a single ranking but five parallel lists. The gap between server position and final position measures the influence of client reranking - critical data for model retraining.
| Liste | List | Description |
|---|---|---|
| sort_gid_list | Ordre trié serveur | Server-sorted order |
| sati_gid_list | Ordre integration pub (SATI) | Ad integration order (SATI) |
| fyp_gid_list | Ordre algorithme FYP | FYP algorithm order |
| client_gid_list | Ordre reranké on-device | On-device reranked order |
| final_gid_list | Ordre final affiche | Final displayed order |
12 scores de prédiction serveur sont envoyés avec chaque vidéo. Le client les compare au comportement réel et remonte 30+ signaux comportementaux par vidéo (durée, delta play, delta share). Batching toutes les 200 ms, seuil minimum 2 événements. Le système conserve les 1000 dernières interactions comme features pour les prédictions suivantes.
12 server prediction scores are sent with each video. The client compares them to actual behavior and reports back 30+ behavioral signals per video (duration, delta play, delta share). Batching every 200ms, minimum 2 events threshold. The system retains the last 1,000 interactions as features for subsequent predictions.
Chaque vidéo du feed peut afficher une raison de recommandation visible par l'utilisateur. Ces 9 clés API, extraites du code source, révèlent les signaux que TikTok juge suffisamment "explicables" pour les montrer.
Each feed video can display a recommendation reason visible to the user. These 9 API keys, extracted from source code, reveal which signals TikTok considers "explainable" enough to show.
| # | Clé API | API key | Texte affiché | Displayed text | Signal impliqué | Implied signal |
|---|---|---|---|---|---|---|
| 1a | bullet_1_liked_past_30_days | "You liked similar posts" | Historique likes 30j | 30-day like history | ||
| 1b | bullet_1_watched_past_30_days | "You viewed similar posts" | Watch time 30j | 30-day watch time | ||
| 1c | bullet_1_shared_past_30_days | "You shared similar posts" | Partages 30j | 30-day shares | ||
| 1d | bullet_1_past_30_days | "You commented on similar posts" | Commentaires 30j | 30-day comments | ||
| 2 | bullet_2_country | "This post is popular in your country" | Geo-ranking | Geo-ranking | ||
| 3a | bullet_3_following | "You are following %s" | Graphe social | Social graph | ||
| 3b | bullet_3_longvid | "This video is longer, you seem to like longer videos" | Préférence contentSizeType | contentSizeType preference | ||
| 4 | bullet_4_youknow | "This post is from someone you may know" | isFamiliar / graphe social étendu | isFamiliar / extended social graph | ||
| 5a | bullet_5_live | "The creator is LIVE now" | Insertion live Skylight | Skylight live insertion | ||
| 5b | bullet_5_topic | "You may be interested in this topic" | Classification topic | Topic classification | ||
| 6 | bullet_6_boost | "This post was given extra traffic to diversify content" | Boost de diversification | Diversification boost | ||
| 7 | bullet_7_profile | "You have viewed this creator's profile and posts" | Affinité créateur | Creator affinity | ||
| 8 | bullet_8_recently | "This post was created recently" | Fraîcheur | Freshness | ||
| 9 | bullet_9_similar | "You searched for similar posts" | Historique de recherche | Search history |
La raison #6 (bullet_6_boost) confirme l'existence d'un mécanisme de boost de diversification - TikTok injecte délibérément du contenu hors-bulle. La raison #3b (bullet_3_longvid) montre que le format (court vs long) est un signal de ranking distinct via contentSizeType.
Reason #6 (bullet_6_boost) confirms the existence of a diversification boost mechanism - TikTok deliberately injects out-of-bubble content. Reason #3b (bullet_3_longvid) shows that format (short vs long) is a distinct ranking signal via contentSizeType.
Le pipeline est en place. Plongeons dans le cœur du système : le modèle de scoring.
The pipeline is in place. Let's dive into the heart of the system: the scoring model.
19 predictions, une formule a exposants differencies, des boosts de createurs et des mecanismes de suppression invisibles
19 predictions, a formula with differentiated exponents, creator boosts and invisible suppression mechanisms
Cette section detaille le coeur du classement du feed : le modele multi-taches v1054 et sa formule de scoring, les 13 scores envoyes a votre telephone, les metriques de qualite technique analysees pour chaque video, et les mecanismes de boost et de suppression qui modifient la visibilite d'un contenu independamment de son score.
This section details the core of feed ranking: the multi-task model v1054 and its scoring formula, the 13 scores sent to your phone, the technical quality metrics analyzed for each video, and the boost and suppression mechanisms that alter a content's visibility independently of its score.
tiktok_video_ctr_v1054_r1314188_0, type general_multitask, cluster oci_ies_search_mtdh_72.
tiktok_video_ctr_v1054_r1314188_0, type general_multitask, cluster oci_ies_search_mtdh_72.
| # | Target | Description | |||
|---|---|---|---|---|---|
| Engagement actif (gamma 0,84) | Active engagement (gamma 0.84) | ||||
| 1 | predict_personalize_like | Probabilité de like | Like probability | ||
| 2 | predict_personalize_share | Probabilité de partage | Share probability | ||
| 3 | predict_personalize_comment | Probabilité de commentaire | Comment probability | ||
| 4 | predict_personalize_follow | Probabilité de follow | Follow probability | ||
| 5 | predict_personalize_favorite | Probabilité de favori | Favorite probability | ||
| 6 | predict_personalize_click_personal | Clic sur le profil créateur | Creator profile click | ||
| 7 | predict_personalize_click_music | Clic sur le son/musique | Sound/music click | ||
| 8 | predict_post_comment | Poster un commentaire | Post a comment | ||
| 9 | predict_like_comment | Liker un commentaire | Like a comment | ||
| Engagement passif (gamma 1,08) | Passive engagement (gamma 1.08) | ||||
| 10 | predict_personalize_p75 | Temps de visionnage au 75e percentile | Watch time at 75th percentile | ||
| 11 | predict_personalize_cdf | Distribution cumulative du temps de visionnage | Watch time cumulative distribution | ||
| 12 | predict_personalize_cdf_inverse | CDF inverse (queue de distribution) | Inverse CDF (distribution tail) | ||
| 13 | predict_comment_read | Lire les commentaires | Read comments | ||
| Signaux de qualité / pénalité | Quality / penalty signals | ||||
| 14 | predict_ctr | Taux de clic | Click-through rate | ||
| 15 | predict_sar | Taux de scroll-away (pénalité) | Scroll-away rate (penalty) | ||
| 16 | predict_real_play | Lecture réelle | Real play | ||
| 17 | predict_reach | Probabilité de reach | Reach probability | ||
| 18 | predict_content_value | Valeur intrinsèque du contenu | Intrinsic content value | ||
| 19 | predict_neg_action | Action négative (pas interesse, signaler) | Negative action (not interested, report) | ||
C'est un choix architectural delibere : gamma 1,08 sur le temps de visionnage vs 0,84 sur les likes. TikTok veut des videos que les gens regardent, pas des videos qui font cliquer.
This is a deliberate architectural choice: gamma 1.08 on watch time vs 0.84 on likes. TikTok wants videos people watch, not videos that generate clicks.
Avant même que vous ne voyiez une vidéo, les serveurs de TikTok ont déjà calculé 13 prédictions sur votre comportement face à elle : allez-vous la liker ? La partager ? La skipper ? Combien de temps allez-vous la regarder ? Ces prédictions, produites par des modèles de machine learning, sont envoyées à votre téléphone avec chaque vidéo du feed.
Before you even see a video, TikTok's servers have already calculated 13 predictions about your behavior: will you like it? Share it? Skip it? How long will you watch? These predictions, produced by machine learning models, are sent to your phone with each video in the feed.
rec_like_model_score Probabilite de likerec_follow Probabilite de followrec_share Probabilite de partagerec_comment Probabilite de commentairerec_click_comment_model_score Ouverture commentairesrec_dislike Probabilite de "pas interesse"rec_finish Regarder jusqu'au boutrec_skip Probabilite de skiprec_staytime Temps de visionnage preditrec_publish Probabilite de repostrec_publish_score Score normalise de publicationrec_head Replay depuis le debutrec_cover Clic sur la miniature
rec_like_model_score Like probabilityrec_follow Follow probabilityrec_share Share probabilityrec_comment Comment probabilityrec_click_comment_model_score Open commentsrec_dislike "Not interested" probabilityrec_finish Watch-to-end probabilityrec_skip Skip probabilityrec_staytime Predicted watch timerec_publish Repost probabilityrec_publish_score Normalized publish scorerec_head Replay from startrec_cover Thumbnail click
Role de ces scores : ce ne sont pas le classement final. Ce sont les entrées du modèle ByteNN on-device (comment_ml_v3). Le serveur envoie ses prédictions brutes au téléphone pour que celui-ci fasse une inférence locale supplémentaire en les combinant avec des signaux temps réel (batterie, CPU, vitesse réseau, historique de session).
Role of these scores: these are not the final ranking. They are the inputs to the on-device ByteNN model (comment_ml_v3). The server sends its raw predictions to the phone so it can run additional local inference by combining these scores with real-time signals (battery, CPU, network speed, session history).
TikTok predit 13 comportements differents pour chaque video. Ces predictions sont combinees avec l'etat de votre telephone (batterie, CPU, reseau) pour des decisions en temps reel. Un contenu qui genere des ouvertures de commentaires et des visites de profil envoie des signaux forts au pipeline ML.
TikTok predicts 13 different behaviors for each video. These predictions are combined with your phone's state (battery, CPU, network) for real-time decisions. Content that generates comment opens and profile visits sends strong signals to the ML pipeline.
| Champ | Field | Description | Exemple | Example |
|---|---|---|---|---|
| VQScore | Score de qualité technique de la vidéo (float) | Technical video quality score (float) | 55.98 - 74.62 | |
| vod_sr_class_v30_score | Classification Super Resolution : UGC (27) < Semi-pro (40) < Pro (63) | Super Resolution classification: UGC (27) < Semi-pro (40) < Pro (63) | 27.29 - 62.49 | |
| Loudness | Volume audio moyen (dB) | Average audio loudness (dB) | -24.7 - -15.6 dB | |
| MusicRatio | Ratio musique - analyse audio automatique (AED) | Music ratio - automatic audio analysis (AED) | ~0.93 | |
| SpeechRatio | Ratio parole (AED) | Speech ratio (AED) | ~0.73 | |
| SingingRatio | Ratio chant (AED) | Singing ratio (AED) | ~0.10 | |
| Brightness | Luminosité moyenne de la vidéo | Average video brightness | ~41.54 | |
| aigcLabelType | Détection IA : 0 = non déterminé, 1 = auto-déclaré, 2 = détecté automatiquement | AI detection: 0 = undetermined, 1 = self-declared, 2 = automatically detected | 0 / 1 / 2 | |
| play_time_prob_dist | Distribution de probabilité du temps de lecture : [seuil_ms, probabilité, duree_attendue_ms] | Play time probability distribution: [threshold_ms, probability, expected_duration_ms] | [800, 0.607, 3159.6] |
Au-dela du score algorithmique, le serveur peut modifier directement la visibilite d'une video via des mecanismes de boost ou de suppression. Ces drapeaux, extraits des metadonnees de chaque video, agissent comme des interrupteurs qui court-circuitent le ranking normal.
Beyond the algorithmic score, the server can directly alter a video's visibility through boost or suppression mechanisms. These flags, extracted from each video's metadata, act as switches that bypass normal ranking.
boost_tag_infoLe serveur peut taguer une video pour la booster. Le code precise "algorithmique/manuel".
The server can tag a video to boost it. The code specifies "algorithmic/manual".
operator_boost_infoDes partenaires telecom peuvent influencer la distribution de contenu.
Telecom partners can influence content distribution.
poi_boostContenu pousse en fonction de la localisation.
Content pushed based on location.
intervention_infoIntervention non-algorithmique dans l'ordonnancement du feed.
Non-algorithmic intervention in feed ordering.
is_nff_or_nrExclut la video du feed. Suppression de distribution, pas de suppression du contenu.
Excludes the video from feed. Distribution suppression, not content deletion.
self_see / is_prohibitedSeul l'auteur voit sa video, ou la video est interdite. Le mecanisme le plus proche du "shadow ban".
Only the author sees their video, or video is prohibited. The closest mechanism to "shadow ban".
user_plus)
Creator boost levels (user_plus)
| Champ | Field | Multiplicateur | Multiplier | Description |
|---|---|---|---|---|
| user_plus_l0_boost | 4.40x | Level 0 - nouveau createur | Level 0 - new creator | |
| user_plus_l1_boost | 5.02x | Level 1 - verifie (boost le plus eleve) | Level 1 - verified (highest boost) | |
| user_plus_l2_boost | 1.44x | Level 2 - star | Level 2 - star |
Les niveaux sont inverses par rapport a l'intuition : les createurs verifies (L1) recoivent un boost 3,5x superieur aux stars (L2). L'algorithme recompense la verification plus que la celebrite.
Levels are inverted from intuition: verified creators (L1) receive a 3.5x higher boost than stars (L2). The algorithm rewards verification more than celebrity.
Chaque video TikTok est classee dans l'une des 21 macro-categories (CategoryType, CT 100-120). En parallele, les champs diversificationId et diversificationLabels decoupent chaque categorie en sous-groupes pour casser les bulles de filtre : l'algorithme empeche deux videos du meme sous-bucket d'apparaitre a la suite. Ces taxonomies sont utilisees aussi bien dans le feed que dans le search. Ces donnees sont directement visibles en clair dans le code source de n'importe quelle video sur tiktok.com.
Every TikTok video is classified into one of 21 macro-categories (CategoryType, CT 100-120). In parallel, the diversificationId and diversificationLabels fields split each category into sub-groups to break filter bubbles: the algorithm prevents two videos from the same sub-bucket from appearing consecutively. These taxonomies are used in both the feed and search. This data is directly visible in plain text in the source code of any video on tiktok.com.
| CT | Label | Label |
|---|---|---|
| 100 | Anime et comics | Anime & Comics |
| 101 | Spectacles | Shows |
| 102 | Beaute et soins | Beauty Care |
| 103 | Jeux | Games |
| 104 | Humour | Comedy |
| 105 | Vie quotidienne | Daily Life |
| 106 | Famille | Family |
| 107 | Relation | Relationship |
| 108 | Drame | Drama |
| 109 | Tenue | Outfit |
| 110 | Playback | Lipsync |
| CT | Label | Label |
|---|---|---|
| 111 | Cuisine | Food |
| 112 | Sport | Sports |
| 113 | Animaux | Animals |
| 114 | Societe | Society |
| 115 | Voitures | Cars |
| 116 | Education | Education |
| 117 | Fitness et sante | Fitness & Health |
| 118 | Technologies | Technology |
| 119 | Chant et danse | Singing & Dancing |
| 120 | Tous | All |
Le feed a son propre pipeline. Mais TikTok a aussi construit un vrai moteur de recherche, avec ses propres regles.
The feed has its own pipeline. But TikTok has also built a real search engine, with its own rules.
Un moteur de recherche autonome avec son propre ranking
A standalone search engine with its own ranking
Un pipeline autonome avec ses propres modeles, distinct du feed
A standalone pipeline with its own models, distinct from the feed
SDR cross-modal (seuil 0,3), SDR personnalise (seuil 0,85), U2I e-com, tags, Viking
SDR cross-modal (threshold 0.3), personalized SDR (threshold 0.85), U2I e-com, tags, Viking
5 familles de systemes5 system families
ANSA ban, risk query ban, CTCVR e-com, coldstart uplift v2
ANSA ban, risk query ban, e-com CTCVR, coldstart uplift v2
FiltrageFiltering
Video v1054 (19 targets) + User v250 (16 targets) + POI v15 (5 targets) + E-com v1284 (21 targets) + LLM relevance
Video v1054 (19 targets) + User v250 (16 targets) + POI v15 (5 targets) + E-com v1284 (21 targets) + LLM relevance
4 modeles + 1 LLM4 models + 1 LLM
Beam search diversity (beta=0,02), MixRank 5 canaux, post-intent, gouvernance (-1M)
Beam search diversity (beta=0.02), MixRank 5 channels, post-intent, governance (-1M)
5 canaux5 channels
8 poids d'engagement (play time, likes, shares, comments, etc.)
8 engagement weights (play time, likes, shares, comments, etc.)
8 signaux8 signals
Modèles ML on-device pour le search
On-device ML models for search
ML local
Le reranking client du search pondère les résultats selon 8 signaux d'engagement. Chaque signal correspond a un champ API avec un poids configurable.
The client-side search reranking weighs results using 8 engagement signals. Each signal maps to an API field with a configurable weight.
| # | Signal | Champ API | API field | Description |
|---|---|---|---|---|
| 1 | Watch Time | play_time_weight | Durée de lecture | Play duration |
| 2 | Likes | like_weight | Nombre de likes | Number of likes |
| 3 | Shares | share_weight | Nombre de partages | Number of shares |
| 4 | Favorites | favourite_weight | Nombre de favoris | Number of favorites |
| 5 | Comments | comment_weight | Nombre de commentaires | Number of comments |
| 6 | Profile Visits | enter_user_weight | Swipe vers le profil créateur | Swipe to creator profile |
| 7 | Music Clicks | enter_music_weight | Clics vers la page audio | Clicks to audio page |
| 8 | Completion | finish_weight | Vidéo regardée jusqu'au bout | Video watched to completion |
En plus du modèle vidéo, TikTok utilise un modèle utilisateur dédié pour le search. Ce modèle prédit 16 comportements différents pour chaque résultat de recherche, spécifiques à votre profil : allez-vous cliquer, lire, suivre, signaler ?
On top of the video model, TikTok uses a dedicated user model for search. This model predicts 16 different behaviors for each search result, specific to your profile: will you click, read, follow, report?
mt_user_ctr_v250_r1313345_0mt_user_ctr_v250_r1313345_0| # | Target | Description | |
|---|---|---|---|
| 1 | predict_video_play | Lecture vidéo | Video play |
| 2 | predict_click | Clic | Click |
| 3 | pred_staytime | Temps de consultation | Browse time |
| 4 | predict_real_play | Lecture réelle | Real play |
| 5 | predict_finish | Complétion | Completion |
| 6 | predict_like | Like | |
| 7 | predict_share | Partage | Share |
| 8 | predict_comment | Commentaire | Comment |
| 9 | predict_click_personal | Clic profil | Profile click |
| 10 | predict_click_music | Clic musique | Music click |
| 11 | predict_favourite | Favori | Favorite |
| 12 | predict_follow | Follow | |
| 13 | predict_staytime | Temps de consultation | Browse time |
| 14 | predict_dislike | Dislike | |
| 15 | predict_report | Signalement | Report |
| 16 | predict_user_click_concentration | Concentration de clics utilisateur | User click concentration |
Un modèle dédié, tiktok_top_1_ctr_v9, évalue exclusivement le premier résultat de recherche. Parmi ses targets : predict_changeq, la probabilité que l'utilisateur change de requête. TikTok optimise pour que le premier résultat soit assez bon pour que vous ne cherchiez pas autre chose.
A dedicated model, tiktok_top_1_ctr_v9, evaluates exclusively the first search result. Among its targets: predict_changeq, the probability that the user changes their query. TikTok optimizes so the first result is good enough that you don't search for something else.
Pour qu'un résultat apparaisse, il doit dépasser des seuils de corrélation sémantique stricts. Les résultats personnalisés exigent un score presque 3 fois plus élevé que les résultats généraux.
For a result to appear, it must exceed strict semantic correlation thresholds. Personalized results require a score nearly 3 times higher than general results.
| Paramètre | Parameter | Valeur | Value | Description |
|---|---|---|---|---|
| SDR général | 0.3 | Corrélation sémantique minimale | Minimum semantic correlation | |
| SDR personnalisé | 0.85 | Presque 3x plus strict que le général | Nearly 3x stricter than general | |
| ies_drop_low_user_rel | 0.003152 | Seuil min de pertinence utilisateur | Min user relevance threshold | |
| ies_ltr_no_top1_rel | 0.818866 | Seuil LTR pour non-Top1 | LTR threshold for non-Top1 |
Les 1000 dernières interactions feed sont envoyées comme features au modèle de search (mt_video_enable_feed_seq_full_life_dump = true, count = 1000). Réciproquement, le système search_result_darwin_recall injecte des vidéos dans le FYP basees sur vos recherches. Les deux surfaces partagent vos données comportementales.
The last 1,000 feed interactions are sent as features to the search model (mt_video_enable_feed_seq_full_life_dump = true, count = 1000). Conversely, search_result_darwin_recall injects videos into the FYP based on your searches. Both surfaces share your behavioral data.
Le search a ses propres règles. Découvrons ses couches de suggestions et son Knowledge Graph.
Search has its own rules. Let's discover its suggestion layers and Knowledge Graph.
Avant meme que vous ne tapiez un caractere, votre telephone a deja recu plus de 800 suggestions pre-calculees - incluant les tendances du moment - pour un affichage instantane. A chaque frappe, 16 sources serveur completent ces suggestions en temps reel. Cote comprehension de la requete, TikTok s'appuie sur un Knowledge Graph (alimente par 4 sources externes : Wikipedia, IMDb, catalogues gaming et musique - bien moins avance que celui de Google) et sur Textnet, un classifier qui categorise votre requete parmi 30+ intentions avant meme que les resultats ne soient charges. Deux tiers des suggestions pre-cachees portent un intent e-commerce non nul : le search est aussi un entonnoir commercial.
Before you even type a character, your phone has already received over 800 pre-computed suggestions - including current trends - for instant display. With each keystroke, 16 server sources supplement these suggestions in real time. For query understanding, TikTok relies on a Knowledge Graph (powered by 4 external sources: Wikipedia, IMDb, gaming catalogs and music - far less advanced than Google's) and on Textnet, a classifier that categorizes your query across 30+ intents before results are even loaded. Two thirds of pre-cached suggestions carry non-zero e-commerce intent: search is also a commercial funnel.
806 suggestions pré-chargées, source darwin_active_search_click_24h_recall, 42 langues, 62.9% anglais. Fichier binaire local.
806 pre-loaded suggestions, source darwin_active_search_click_24h_recall, 42 languages, 62.9% English. Local binary file.
16 sources en temps réel à chaque frappe, scoring via predict_ctr_score.
16 real-time sources on each keystroke, scored via predict_ctr_score.
Search After Search : suggestions post-résultat pour enchainer les recherches.
Search After Search: post-result suggestions to chain searches.
Quand vous tapez une recherche, TikTok ne se contente pas de chercher dans un index. 16 systèmes différents sont interrogés simultanément - du cache local aux modèles sémantiques multilingues (XLM-R), en passant par le Knowledge Graph et le catalogue produits. Ces 16 sources sont réparties en 6 familles.
When you type a search, TikTok doesn't just look through an index. 16 different systems are queried simultaneously - from the local cache to multilingual semantic models (XLM-R), through the Knowledge Graph and product catalog. These 16 sources are organized into 6 families.
| Source | Famille | Family | Description | |
|---|---|---|---|---|
| orion_realtime_recall | Orion | Recall temps réel | Real-time recall | |
| orion_rewrite_recall | Orion | Correction orthographique | Spell correction | |
| orion_experience_recall | Orion | Basee sur l'expérience utilisateur | Based on user experience | |
| darwin_active_search_click_24h | Darwin | Clics de recherche 24h (cache) | Search clicks 24h (cache) | |
| darwin_active_search_click_7d | Darwin | Clics de recherche 7 jours | Search clicks 7 days | |
| darwin_global_recall | Darwin | Recall global | ||
| darwin_experience_recall | Darwin | Recall expérience | Experience recall | |
| viking_xlmr_recall | Sémantique | Semantic | XLM-R (BERT multilingue) via Viking | XLM-R (multilingual BERT) via Viking |
| awesome_sug_recall | Sémantique | Semantic | Suggestions sémantiques avancées | Advanced semantic suggestions |
| qse_recall | Sémantique | Semantic | Query Suggestion Engine | |
| session_recall | Contexte | Context | Session courante | Current session |
| history_recall | Contexte | Context | Historique de recherche | Search history |
| trending_recall | Contexte | Context | Tendances | Trends |
| entity_recall | Entite | Entity | Knowledge Graph (NER) | |
| product_recall | E-commerce | Catalogue produits | Product catalog | |
| origin_query_recall | Query | Requête originale | Original query |
2/3 des suggestions pré-cachées ont un intent e-commerce non nul. TikTok a transformé son moteur de recherche en entonnoir commercial.
2/3 of pre-cached suggestions have non-zero e-commerce intent. TikTok has transformed its search engine into a commercial funnel.
TikTok intégré un Knowledge Graph dans son moteur de recherche, alimenté par 4 sources de données externes. Il affiche des Entity Cards structurées dans les résultats, comparables aux Knowledge Panels de Google. L'entité s'active dès 3 caractères tapés et s'affiche toujours en position 0.
TikTok has a built-in Knowledge Graph integrated into its search engine, powered by 4 external data sources. It displays structured Entity Cards in search results, similar to Google's Knowledge Panels. The entity activates after just 3 characters typed and is always displayed at position 0.
| titleStyle | Type | Source | |
|---|---|---|---|
| 2 | WIKI | Wikipedia | |
| 3 | IMDB | IMDb (films/series/acteurs) | IMDb (movies/series/actors) |
| 4 | GAME | Catalogues gaming partenaires | Partner gaming catalogs |
| 6 | MUSIC | Catalogue musical TikTok interne | TikTok internal music catalog |
Deux niveaux de confiance : Strong Entity Card (carte complète avec images et métriques) vs Weak Entity (abstract uniquement). L'entity_recall s'active dès 3 caractères tapés et l'entité est toujours affichée en position 0 quand présente.
Two confidence levels: Strong Entity Card (full card with images and metrics) vs Weak Entity (abstract only). entity_recall activates after just 3 characters typed, and the entity is always displayed at position 0 when present.
Textnet (format XXXX##YYY) classe chaque requete de recherche dans 30+ categories d'intention (codes 1001-1035+) avant meme que les resultats ne soient charges. C'est le premier filtre : il determine si votre recherche est informationnelle, commerciale ou de divertissement, et oriente le pipeline de ranking en consequence.
Textnet (format XXXX##YYY) classifies each search query into 30+ intent categories (codes 1001-1035+) before results are even loaded. It's the first filter: it determines whether your search is informational, commercial or entertainment-oriented, and steers the ranking pipeline accordingly.
Optimisez vos textes, hashtags et descriptions comme du SEO. Les suggestions sont générées par 6 familles de sources (16 au total), incluant une compréhension sémantique multilingue et un Knowledge Graph. Le scoring d'intention commerciale montre que TikTok évalue le potentiel transactionnel de chaque requête.
Optimize your texts, hashtags and descriptions like SEO. Suggestions are generated from 6 source families (16 total), including multilingual semantic understanding and an entity Knowledge Graph. Commercial intent scoring shows TikTok evaluates the transactional potential of each query.
Le search cible vos intentions. La publicité, elle, cible votre attention - et avec une précision chirurgicale.
Search targets your intentions. Advertising targets your attention - with surgical precision.
Comment TikTok décide quelles pubs vous montrer, et quand
How TikTok decides which ads to show you, and when
SATI (serveur, 278 paramètres) + Pitaya (on-device ML) + Transport (28 champs)
SATI (server, 278 parameters) + Pitaya (on-device ML) + Transport (28 fields)
La publicité sur TikTok repose sur trois systèmes imbriqués. Côté serveur, SATI décide quelles pubs sont éligibles et à quel prix minimum. Côté téléphone, Pitaya repositionne les pubs dans votre feed en temps réel grâce à du machine learning local. Et entre les deux, un protocole de transport classifie chaque pub en 28 champs - incluant des formats invisibles comme les ghost ads et les dark posts.
TikTok advertising relies on three interlocking systems. Server-side, SATI decides which ads are eligible and at what minimum price. On your phone, Pitaya repositions ads in your feed in real time using local machine learning. And between the two, a transport protocol classifies each ad across 28 fields - including invisible formats like ghost ads and dark posts.
Search Ads Technology Infrastructure (serveur). 278 paramètres de configuration, seuil eCPM minimum, formule quadratique de placement.
Search Ads Technology Infrastructure (server). 278 configuration parameters, minimum eCPM threshold, quadratic placement formula.
ML on-device. Pipeline tiktok_showtime_ad_gap, package daogua, fonction adjust_items.
On-device ML. Pipeline tiktok_showtime_ad_gap, package daogua, function adjust_items.
28 champs de métadonnées publicitaires, ghost ads, pseudo-ads, dark posts.
28 ad metadata fields, ghost ads, pseudo-ads, dark posts.
Glossaire publicitaireAd glossary
CTR (Click-Through Rate) - Taux de clicClick-through rate
CVR (Conversion Rate) - Taux de conversionConversion rate
CTCVR (Click-Through Conversion Rate) - Produit du CTR et du CVR : probabilite de voir, cliquer ET acheterProduct of CTR and CVR: probability of seeing, clicking AND buying
GMV (Gross Merchandise Value) - Valeur brute des marchandises venduesTotal value of merchandise sold
eCPM (Effective Cost Per Mille) - Cout effectif pour 1 000 impressionsEffective cost per 1,000 impressions
Une fois les publicités chargées par le serveur, le framework Pitaya sur votre téléphone peut les déplacer dans le feed - c'est-a-dire changer leur position parmi les vidéos organiques. Voici les règles qui gouvernent ces déplacements :
Once ads are loaded from the server, the Pitaya framework on your phone can move them within the feed - that is, change their position among organic videos. Here are the rules governing these displacements:
| Règle | Rule | Valeur | Value | Impact |
|---|---|---|---|---|
| enable_move_up | true | Les pubs PEUVENT être remontées dans le feed | Ads CAN be moved up in the feed | |
| enable_move_down | false | Les pubs ne sont PAS descendues | Ads are NOT moved down | |
| enable_brand_ad_move | true | Les pubs de marque sont déplaçables | Brand ads can be moved | |
| enable_dislike_ad_delete | true | "Pas interesse" supprime la pub | "Not interested" removes the ad |
L'algorithme on-device peut déplacer une pub plus haut dans votre feed pour la montrer plus tôt, mais jamais la retarder. Le système est biaisé en faveur des annonceurs.
The on-device algorithm can move an ad higher in your feed to show it sooner, but never delay it. The system is biased in favor of advertisers.
Le sous-systeme de scoring de Pitaya pondere toutes les actions explicites a 0,25, et le watch time 2,5x moins (0,10). Ces poids determinent comment le framework on-device reordonne les contenus - y compris le placement des pubs.
Pitaya's scoring subsystem weights all explicit actions at 0.25, and watch time 2.5x less (0.10). These weights determine how the on-device framework reorders content - including ad placement.
Le partage n'est PAS le graal. Il pèse exactement le même poids qu'un like, un bookmark ou un follow dans ce sous-système.
Share is NOT the holy grail. It weighs exactly the same as a like, a bookmark, or a follow in this subsystem.
Portee de ces poids : ces poids proviennent de la couche de reranking on-device (framework Pitaya), pas du modèle serveur principal du For You Page.
Scope of these weights: these weights come from the on-device reranking layer (Pitaya framework), not the main server-side For You Page model.
L'architecture est en place. Voyons les chiffres concrets.
The architecture is in place. Let's look at the concrete numbers.
Plus une pub est haut dans le feed, plus le seuil de revenu exigé est élevé - et certains formats publicitaires sont invisibles à l'oeil nu
The higher an ad sits in the feed, the higher the revenue threshold required - and some ad formats are invisible to the naked eye
| Position | Valeur interne | Internal value | Estimation USD | Estimated USD | Description |
|---|---|---|---|---|---|
| Position 0 (top) | Position 0 (top) | 400,000 | ~$4.00 eCPM | Premium première position | Premium first position |
| Positions 1-3 | 300,000 | ~$3.00 eCPM | Positions hautes | High positions | |
| Default (4-12) | Default (4-12) | 220,000 | ~$2.20 eCPM | Seuil minimum standard | Standard minimum threshold |
| Inner flow | 110,000 | ~$1.10 eCPM | Inventaire secondaire | Secondary inventory | |
| Plancher absolu | Absolute floor | 5,000 | ~$0.05 eCPM | Aucune pub en dessous | No ads below this |
| Shop search pos 0 | 5,000,000 | ~$50.00 eCPM | 1ère position e-commerce | 1st e-commerce position |
Les valeurs eCPM internes sont exprimees en micro-cents (1 unite = $0,00001). Estimation deduite de la formule ecpm_score et validee par coherence avec les eCPM de marche US.
Internal eCPM values are expressed in micro-cents (1 unit = $0.00001). Estimate derived from the ecpm_score formula and validated against US market eCPMs.
x est un index de position normalisé (0 = début du feed, ~1 = milieu). À x=0, le seuil est de 880 000 (~$8.80 eCPM). À x=1, il chute a 5 000 (~$0.05). En clair : seules les pubs les plus lucratives ont le droit d'apparaître en haut du feed.
x is a normalized position index (0 = start of feed, ~1 = middle). At x=0, the threshold is 880,000 (~$8.80 eCPM). At x=1, it drops to 5,000 (~$0.05). Simply put: only the most lucrative ads are allowed to appear at the top of the feed.
Avant d'appliquer le score eCPM, TikTok vérifie que la pub a un retour sur investissement suffisant. Si le flag enable_roi2 est actif, la pub doit dépasser deux seuils simultanés (CVR et valeur estimée) pour que son score eCPM soit pris en compte. Sinon, le multiplicateur tombe a 1 - la pub perd tout avantage de positionnement.
Before applying the eCPM score, TikTok checks that the ad has sufficient return on investment. If the enable_roi2 flag is active, the ad must exceed two simultaneous thresholds (CVR and estimated value) for its eCPM score to be applied. Otherwise, the multiplier falls to 1 - the ad loses all positioning advantage.
Deux conditions doivent etre remplies : cvr_score * roi2_item_price * 1000 > 3 (la valeur estimée de la conversion dépasse un seuil) et cvr_score > 0.0004 (le taux de conversion est suffisant). Si l'une échoue, le multiplicateur eCPM est neutralisé a 1.
Two conditions must be met: cvr_score * roi2_item_price * 1000 > 3 (estimated conversion value exceeds a threshold) and cvr_score > 0.0004 (conversion rate is sufficient). If either fails, the eCPM multiplier is neutralized to 1.
| Contexte | Context | Gap minimum | Minimum gap | Note |
|---|---|---|---|---|
| Mobile | 1 video | rerank_min_ad_gap: 1 | ||
| Web | 3 videos | framework_min_ad_gap: 3 | ||
| Inner flow | 5 positions | Standard | ||
| eCPM top 40% | 3 positions | Gap reduit | Reduced gap | |
| eCPM top 10% | 6 positions | Espacement de 6 positions entre ads premium (protection anti-cannibalisation entre ads, pas un recul dans le feed) | 6-position spacing between premium ads (anti-cannibalization between ads, not a demotion in the feed) |
Visibles uniquement pour certains utilisateurs ciblés, invisibles pour les autres. Impossible à detecter sans interception réseau.
Visible only to certain targeted users, invisible to others. Impossible to detect without network interception.
is_ghost_adsPosts non-publics utilisés pour le ciblage, absents du profil créateur. N'apparaissent pas dans la grille de vidéos du compte.
Non-public posts used for targeting, absent from creator profile. Don't appear in the account's video grid.
dark_post_sourceContenu organique avec insertion pub native, indistinguable du contenu normal dans le feed.
Organic content with native ad insertion, indistinguishable from normal content in the feed.
is_pseudo_adInsertion publicitaire mid-feed activée en production (enable_mid_roll: true).
Mid-feed ad insertion enabled in production (enable_mid_roll: true).
Contenu organique amplifié. Triple classification client : isAd (pub classique), isSoftAd (Spark Ads), hasAd (indicateur de présence).
Amplified organic content. Triple client classification: isAd (classic ad), isSoftAd (Spark Ads), hasAd (presence indicator).
Dans notre test sur émulateur Android (compte neuf, zéro vidéo visionnée), le ciblage publicitaire inférait une tranche d'âge de 45-55 ans. Types de critères observés : age, localisation, appareil/OS, activité on et off-TikTok.
In our test on an Android emulator (new account, zero videos watched), ad targeting inferred an age range of 45-55. Observed criteria types: age, location, device/OS, activity on and off TikTok.
L'inférence d'âge sur un compte neuf sans aucune interaction suggère l'utilisation de sources de données externes (empreinte appareil, géolocalisation IP, et potentiellement des partenariats de données tierces). TikTok cible avant même que vous n'ayez interagi.
Age inference on a new account without any interaction suggests the use of external data sources (device fingerprint, IP geolocation, and potentially third-party data partnerships). TikTok targets before you've even interacted.
La pub finance la plateforme. Mais TikTok construit aussi un système e-commerce complet avec ses propres règles de jeu.
Ads fund the platform. But TikTok is also building a complete e-commerce system with its own rules.
Un système de ranking e-commerce où le taux de clic est élevé à la puissance 4
An e-commerce ranking system where click rate is raised to the power of 4
9 modèles ML dédiés, des coefficients astronomiques, une hiérarchie de signaux radicale
9 dedicated ML models, astronomical coefficients, a radical signal hierarchy
Le système e-commerce de TikTok (TikTok Shop) a son propre pipeline de ranking en 7 étapes, du tri grossier initial jusqu'à la position finale hybride. 9 modèles ML dédiés évaluent chaque produit. Les coefficients utilisés sont astronomiques : le CTR est multiplié par 2 000 puis élevé à la puissance 4, le CVR est multiplié par 46 351 puis élevé au carré. Voici les étapes du pipeline :
TikTok's e-commerce system (TikTok Shop) has its own 7-step ranking pipeline, from initial rough sorting to the final hybrid position. 9 dedicated ML models evaluate each product. The coefficients used are astronomical: CTR is multiplied by 2,000 then raised to the power of 4, CVR is multiplied by 46,351 then squared. Here are the pipeline steps:
Tri grossier
Rough sorting
Scoring ML
ML scoring
Pre-diversification
Pre-diversification
Diversification
Règles business
Business rules
Position produit
Product position
Position finale
Final position
Chaque produit dans TikTok Shop est évalue par 9 modèles de machine learning spécialisés : prédiction de conversion (CVR), valeur des ventes (GMV), matching visuel, recherche par photo, et même un modèle dédié au cold start des nouveaux produits.
Each product in TikTok Shop is evaluated by 9 specialized machine learning models: conversion prediction (CVR), sales value (GMV), visual matching, photo search, and even a dedicated model for cold-starting new products.
| Modèle | Model | Type | Targets | |
|---|---|---|---|---|
| tiktok_search_ecom_us_v1284 | CVR (21 targets) | Video CVR + Card CVR + Live CVR | ||
| tiktok_search_ecom_us_v1303 | GMV (7 targets) | pred_buy, pred_cart, pred_multi_order, pred_gmv | ||
| tiktok_mall_rerank | Rerank | Score unique de reranking | Single reranking score | |
| tiktok_us_ecom_search_rawrank_ctcvr | CTCVR | CTR x CVR | ||
| tiktok_ecom_search_coldstart_uplift_v2 | Uplift | Boost produits sans historique | Boost for products without history | |
| tiktok_photo_search_us_v7 | Photo search | pred_buy_cvr, pred_cart_cvr, pred_multi_order | ||
| tiktok_us_search_ecom_u2i_retrieval | U2I | User-to-Item avec tenseurs sparses | User-to-Item with sparse tensors | |
| tiktok_search_ecom_us_v1170 | UFS Recall | Recall e-com généraliste | General e-com recall | |
| dino_ecom_without_text_0.4 | Détection objets | Object detection | Matching visuel multi-modal | Multi-modal visual matching |
La formule est violemment non-linéaire. Une petite amélioration du CTR produit un impact énorme sur le ranking. Optimiser le taux de clic sur la fiche produit est le levier numéro 1.
The formula is violently non-linear. A small CTR improvement produces a huge ranking impact. Optimizing click-through rate on the product listing is the #1 lever.
Le multi-order est intégré directement : pCVR + pCart x (1 + multi_order). Les produits qui génèrent des commandes multiples sont structurellement favorisés.
Multi-order is integrated directly: pCVR + pCart x (1 + multi_order). Products that generate multiple orders are structurally favored.
La formule est en place. Mais qui gagne dans ce système ?
The formula is in place. But who wins in this system?
Un boost x10 000 invisible, un scoring BERT à 3 paliers, et le CTCVR comme seul signal qui compte
An invisible x10,000 boost, 3-tier BERT scoring, and CTCVR as the only signal that matters
Ce n'est PAS un statut public officiel de TikTok Shop. Les programmes publics (Beginner/Standard/Premium/Pro, Official Shop, Gold Star, Silver Star) sont distincts. key_seller_type est une classification interne invisible, attribuée côté serveur, que le vendeur ne peut ni voir ni demander.
This is NOT an official public TikTok Shop status. Public programs (Beginner/Standard/Premium/Pro, Official Shop, Gold Star, Silver Star) are separate. key_seller_type is an invisible internal classification, assigned server-side, that the seller cannot see or request.
TikTok utilise un modèle BERT pour évaluer la pertinence entre la requête de recherche et chaque produit. Le score BERT détermine un multiplicateur à 3 paliers qui impacte directement le classement. Un produit non pertinent voit son score divisé par 10 - ou tombe à zéro en inner flow.
TikTok uses a BERT model to evaluate relevance between the search query and each product. The BERT score determines a 3-tier multiplier that directly impacts ranking. An irrelevant product sees its score divided by 10 - or drops to zero in inner flow.
| Paramètre | Parameter | Valeur | Value | Signification | Meaning |
|---|---|---|---|---|---|
| ctcvr_alpha | 2 | CTCVR domine | CTCVR dominates | ||
| ctcvr_beta | 100 | ||||
| ctr_alpha / beta | 0 / 0 | CTR seul = zéro poids | CTR alone = zero weight | ||
| gmv_alpha / beta | 0 / 0 | GMV seul = zéro poids | GMV alone = zero weight |
Le CTCVR (clic x conversion) est le seul signal qui compte dans le reranking e-commerce. Le CTR seul et le GMV seul ont un poids zéro. TikTok ne classe pas par valeur de panier mais par probabilité de conversion. Un produit à 5 euros qui convertit bien battra un produit à 500 euros qui convertit mal.
CTCVR (click x conversion) is the only signal that matters in e-commerce reranking. CTR alone and GMV alone have zero weight. TikTok doesn't rank by cart value but by conversion probability. A 5 euro product that converts well will beat a 500 euro product that converts poorly.
Les nouveaux produits sans historique de vente recoivent un boost temporaire de x1 000 et sont places en position 4 a 6 du classement. Au fil de la session, l'algorithme reduit progressivement ce boost : le produit doit prouver qu'il convertit pour maintenir sa visibilite. Si les performances restent faibles, le boost est desactive.
New products with no sales history receive a temporary x1,000 boost and are placed at positions 4-6 in the ranking. Throughout the session, the algorithm gradually reduces this boost: the product must prove it converts to maintain visibility. If performance remains low, the boost is disabled.
Les quatre surfaces sont décryptées. Mais quel est le moteur sous le capot ?
All four surfaces are decoded. But what's the engine under the hood?
L'inventaire complet de l'intelligence artificielle decouverte dans l'application
The complete inventory of AI discovered in the application
L'ensemble des mecanismes etudies precedemment repose sur un ecosysteme de modeles ML. Le feed, le search, la pub et le commerce partagent certains modeles (le v1054 sert au feed ET au search) mais en deploient aussi de specifiques. Voici l'inventaire complet, tel qu'il ressort de l'analyse.
All the mechanisms studied previously rely on an ecosystem of ML models. Feed, search, ads and commerce share some models (v1054 serves both feed AND search) but also deploy specific ones. Here's the complete inventory as it emerged from the analysis.
| Domaine | Domain | Modele | Model | Version | Targets iNombre de comportements que le modele predit simultanement. Par exemple, 19 targets signifie que le modele predit 19 actions differentes (like, share, skip, etc.) en une seule inference.Number of behaviors the model predicts simultaneously. For example, 19 targets means the model predicts 19 different actions (like, share, skip, etc.) in a single inference. | Surface |
|---|---|---|---|---|---|---|
| Video (feed+search) | tiktok_video_ctr_v1054 | r1314188 | 19 | Feed + Search | ||
| Utilisateur (search) | User (search) | mt_user_ctr_v250 | r1313345 | 16 | Search | |
| E-com (search) | tiktok_search_ecom_us_v1284 | r1301960 | 21 | Commerce | ||
| E-com GMV | tiktok_search_ecom_us_v1303 | r1303287 | 7 | Commerce | ||
| Top1 CTR | tiktok_top_1_ctr_v9 | r1298985 | 4 | Search | ||
| POI | mt_poi_v15 | r1233218 | 5 | Search | ||
| Photo search | tiktok_photo_search_us_v7 | r1319228 | 6 | Search | ||
| E-com rerank | tiktok_mall_rerank | r1273364 | 1 | Commerce | ||
| Coldstart uplift | tiktok_ecom_search_coldstart_uplift_v2 | r1125067 | -- | Commerce | ||
| SDR cross-modal | sdr_query_no_wide_withpretrain | 219407 | -- | Search | ||
| SDR personnalisé | Personalized SDR | tiktok_video_personalize_sdr_v64 | r1298962 | -- | Search | |
| LLM relevance | finerel_trelv1_q4pack | 20251226 | -- | Search | ||
| E-com rawrank CTCVR | tiktok_us_ecom_search_rawrank_ctcvr | r1236378 | -- | Commerce | ||
| U2I retrieval | tiktok_us_search_ecom_u2i_retrieval_v254 | r1251697 | -- | Commerce | ||
| UFS recall | tiktok_search_ecom_us_v1170 | r1256398 | -- | Commerce | ||
| Graphe social | Social graph | tiktok_social_g_2_d_v7 | r1299145 | 1 | Feed | |
| Lemon8 rétention | lemon_8_tt_v12 | r1306383 | 1 | Feed | ||
| Help post intent | helppost_intention_model_bertmatch_promptv10_1 | -- | -- | Search | ||
| Post-intent | tt_search_post_intent_model_v1 | r1279341 | -- | Search | ||
| Détection objets | Object detection | dino_ecom_without_text_0.4 | -- | -- | Commerce |
Tous ces modèles sont servis depuis les clusters oci_ies_search_mtdh_72 et oci_search_ecom_mtdh_64, datacenters useast5 et useast8. Le modèle v1054 est le plus polyvalent : il sert à la fois au feed For You et au fine rank du search.
All models are served from clusters oci_ies_search_mtdh_72 and oci_search_ecom_mtdh_64, datacenters useast5 and useast8. Model v1054 is the most versatile: it serves both the For You feed and search fine rank.
| Surface | Modele | Model | Description |
|---|---|---|---|
| Feed | comment_ml_v3 | Prediction ouverture commentaires (122 features, ByteNN) | Comment open prediction (122 features, ByteNN) |
| Feed | repost_guides | Score de probabilite de repost (10 signaux, poids 0,25 / 0,10) | Repost probability score (10 signals, weights 0.25/0.10) |
| Feed | vod_playtime_prediction | Prediction temps de visionnage AVANT lecture | Watch time prediction BEFORE playback |
| Ads | tiktok_showtime_ad_gap | Reranking placement publicitaire (package "daogua") | Ad placement reranking (package "daogua") |
| Search | search_auto_suggest | Ranking suggestions on-device (9 variantes) | On-device suggestion ranking (9 variants) |
| Search | search_smart_object_detection | Detection objets recherche visuelle | Visual search object detection |
| Search | search_inflow_load_more_android | Reranking au load-more | Load-more reranking |
| Search | search_highlight_click_v2_android | Prediction clic highlights | Highlight click prediction |
| E-com | gec_search_fyp_click_prediction | Prediction clic FYP depuis search | FYP click prediction from search |
| E-com | gec_search_feature | Features e-commerce search | E-commerce search features |
| E-com | ec_real_time_feature_fetch | Features e-com temps reel | Real-time e-com features |
| Live | live_title_intent_bytenn | Intent du titre de live | Live title intent |
| Live | live_inner_room_duration_prediction | Prediction duree en live room | Live room duration prediction |
| Perms | permission_trigger | Declenchement permissions ML (CTR seuil : 0,08) | ML permission trigger (CTR threshold: 0.08) |
Un réseau de neurones de 300 KB qui prédit en temps réel si vous allez ouvrir les commentaires
A 300 KB neural network that predicts in real-time if you'll open comments
| Catégorie | Category | Nb features | # features | Exemples | Examples |
|---|---|---|---|---|---|
| Interaction commentaires | Comment interactions | 29 | click_comment, post_comment_cnt, comment_trending_words_* | ||
| Predictions serveur (p_*)Server predictions (p_*) iPredictions brutes calculees par le serveur et envoyees au telephone. Le modele on-device les reutilise comme entrees pour affiner sa propre prediction locale.Raw predictions computed by the server and sent to the phone. The on-device model reuses them as inputs to refine its own local prediction. | 26 | p_play_0..9, p_like_0..9, p_comment_8/9 | |||
| Historique play time | Play time history | 14 | play_time_0..9, _avg, _mid, _min, _total | ||
| Scores reco serveur (rec_*) | Server reco scores (rec_*) | 11 | rec_staytime, rec_click_comment_model_score | ||
| Engagement historique | Historical engagement | 9 | click_pause_cnt, favourite_cnt, finish_cnt | ||
| Session courante | Current session | 9 | cur_head, cur_like, cur_playtime, cur_gap_time | ||
| Stats utilisateur (u_*) | User stats (u_*) | 7 | u_comment_cnt, u_continue_skip, u_vv_cnt | ||
| Stats vidéo (v_*) | Video stats (v_*) | 6 | v_comment_cnt, v_like_cnt, v_play_count | ||
| Appareil/hardware | Device/hardware | 5 | battery_pct, is_charge, battery_temperature, screen_brightness, cpu_usage | ||
| Réseau | Network | 2 | speed_4g, speed_wifi | ||
| Performance (GC) iLe garbage collector de Java libere automatiquement la memoire inutilisee. Quand il tourne trop souvent, l'app se fige brievement - signe que le telephone est sous pression.Java's garbage collector automatically frees unused memory. When it runs too often, the app briefly freezes - a sign the phone is under pressure. | 2 | gc_block_count, gc_block_time | |||
| Contexte sceneScene context iIndique dans quel ecran de l'app vous etes (feed principal, page profil, page recherche...). Le comportement de commentaire varie selon le contexte de navigation.Indicates which screen of the app you're on (main feed, profile page, search page...). Comment behavior varies depending on the navigation context. | 2 | aweme_scene (one-hot) |
Parmi les 122 features, on trouve des signaux materiels inhabituels : le niveau de batterie (battery_pct), la temperature de la batterie, la luminosite de l'ecran, l'utilisation CPU, et meme le garbage collector Java (gc_block_count, gc_block_time). TikTok utilise l'etat physique de votre telephone comme signal predictif de votre comportement. Si votre telephone rame (CPU sature, garbage collector qui bloque l'app, batterie faible), le modele en deduit que vous etes moins susceptible d'interagir - l'experience est degradee, donc vous allez scroller plus vite et moins ouvrir les commentaires.
Among the 122 features are unusual hardware signals: battery level (battery_pct), battery temperature, screen brightness, CPU usage, and even the Java garbage collector (gc_block_count, gc_block_time). TikTok uses the physical state of your phone as a predictive signal for your behavior. If your phone is lagging (CPU saturated, garbage collector blocking the app, low battery), the model infers you're less likely to interact - the experience is degraded, so you'll scroll faster and open comments less often.
TikTok embarque dans son application un ensemble de libraries natives (fichiers .so) qui forment un framework complet d'inference ML directement sur votre telephone. Ces libraries permettent d'executer des modeles de machine learning, du traitement d'evenements complexes, du fingerprinting audio, et meme un SDK de provenance de contenu (C2PA).
TikTok ships within its application a set of native libraries (.so files) that form a complete ML inference framework directly on your phone. These libraries enable running machine learning models, complex event processing, audio fingerprinting, and even a content provenance SDK (C2PA).
| Library | Fonction | Function |
|---|---|---|
| libbytenn.so | ByteNN (framework inférence ML, équivalent TFLite) | ByteNN (ML inference framework, TFLite equivalent) |
| libbytennwrapper.so | Wrapper ByteNN | |
| libclient_ai_impl_jni.so | Implémentation Client AI (bridge JNI) | Client AI implementation (JNI bridge) |
| libCepAST.so | AST - Complex Event Processing | |
| libCepEngine.so | Moteur CEP | CEP engine |
| libaudio_fingerprint_sdk.so | Fingerprinting audio | Audio fingerprinting |
| libbytedt.so | Decision tree ByteDance | |
| libdex_df_pitaya.so | DEX-in-SO (code Java caché dans lib native) | DEX-in-SO (Java code hidden in native lib) |
| libtt_c2pa_sdk.so | SDK C2PA (provenance contenu) | C2PA SDK (content provenance) |
Un Feature Store est une base de donnees locale qui collecte et organise en continu les signaux de votre telephone pour alimenter les modeles ML. TikTok en deploie 4, chacun specialise dans un type de donnees : etat de l'appareil, profil utilisateur, comportement de scroll, et historique d'achat.
A Feature Store is a local database that continuously collects and organizes signals from your phone to feed ML models. TikTok deploys 4 of them, each specialized in a type of data: device state, user profile, scroll behavior, and purchase history.
| Groupe | Group | Classe | Class | Signaux collectés | Collected signals |
|---|---|---|---|---|---|
| ies_basic | IESBasicFeaturePTYProducer | État réseau (wifi/4G/5G), type appareil, mémoire, CPU | Network state (wifi/4G/5G), device type, memory, CPU | ||
| f_solaria_portrait | PortraitFeaturePTYProducer | Portrait utilisateur : intérêts, historique, segments | User portrait: interests, history, segments | ||
| ies_pty | AWEFeaturePTYGroup | Vitesse de scroll (sliding_velocity_x/y) | Scroll speed (sliding_velocity_x/y) | ||
| tt_commerce | CommerceFeatureCenterPitayaProducer | Historique d'achat, panier, navigation produit | Purchase history, cart, product browsing |
Ces 4 producteurs collectent en continu des features temps reel sur l'appareil. Le Feature Store local alimente les modeles on-device (ByteNN, CEP) et uploade periodiquement des donnees d'entrainement vers le serveur via le systeme de Federated Learning. Le cycle complet : collecte des features au "play_first_frame", collecte du ground truth au "play_stop", envoi au serveur pour re-entrainement distribue.
These 4 producers continuously collect real-time features on the device. The local Feature Store feeds on-device models (ByteNN, CEP) and periodically uploads training data to the server via the Federated Learning system. Full cycle: feature collection at "play_first_frame", ground truth collection at "play_stop", upload to server for distributed retraining.
L'inventaire est dressé. Qu'est-ce que tout cela change en pratique ?
The inventory is complete. What does all this change in practice?
Trois publics, trois playbooks
Three audiences, three playbooks
The play_time_prob_dist field sets the "meaningful view" threshold at 0.8 seconds (800ms). Below that, the system registers a skip. Watch time carries a gamma of 1.08 (super-linear): watching 2x longer gives more than 2x the score. Every second of retention compounds.
Le champ play_time_prob_dist fixe le seuil de "vue significative" a 0,8 seconde (800ms). En dessous, le systeme enregistre un skip. Le watch time a un gamma de 1.08 (super-lineaire) : regarder 2x plus longtemps donne plus de 2x le score. Chaque seconde de retention se compose.
3 out of 19 model targets are comment-specific: posting a comment, liking a comment, reading comments. The on-device ByteNN model (122 features) runs a dedicated prediction for comment panel opens. Asking a question or creating a debate isn't a trick, it's feeding a super-signal.
3 des 19 cibles du modele sont liees aux commentaires : poster un commentaire, liker un commentaire, lire les commentaires. Le modele ByteNN on-device (122 features) effectue une prediction dediee pour l'ouverture du panneau de commentaires. Poser une question ou creer un debat n'est pas un truc - c'est nourrir un super-signal.
Creator boost levels are inverted. Level 1 (verified) = 5.02x. Level 0 (new) = 4.40x. Level 2 (star) = 1.44x. The algorithm rewards verification more than celebrity.
Les niveaux de boost createur sont inverses. Niveau 1 (verifie) = 5,02x. Niveau 0 (nouveau) = 4,40x. Niveau 2 (star) = 1,44x. L'algorithme recompense la verification plus que la celebrite.
If someone sees your video in search or on your profile, it disappears from their FYP for 30 minutes, then comes back. Search and FYP traffic don't permanently cannibalize each other.
Si quelqu'un voit votre video dans le search ou sur votre profil, elle disparait de son FYP pendant 30 minutes, puis revient. Le trafic search et FYP ne se cannibalisent pas de facon permanente.
predict_content_value is weighted at x5, independent of engagement metrics. Production quality (VQScore range: 55-75), originality, and informativeness appear to feed this signal directly.
predict_content_value est pondere a x5, independamment des metriques d'engagement. La qualite de production (VQScore : 55-75), l'originalite et le caractere informatif semblent nourrir directement ce signal.
TikTok search has its own pipeline, its own models (user model v250: 16 targets), its own value tree, and a relevance LLM (finerel_trelv1_q4pack, deployed December 2025). Treat it as a standalone search engine.
Le search TikTok a son propre pipeline, ses propres modeles (modele utilisateur v250 : 16 cibles), son propre arbre de valeurs, et un LLM de pertinence (finerel_trelv1_q4pack, deploye en decembre 2025). Traitez-le comme un moteur de recherche autonome.
A dedicated model (tiktok_top_1_ctr_v9) evaluates exclusively the first search result. One of its targets: predict_changeq, the probability you'll change your query. TikTok optimizes position 1 so you stop searching.
Un modele dedie (tiktok_top_1_ctr_v9) evalue exclusivement le premier resultat de recherche. L'une de ses cibles : predict_changeq, la probabilite que vous changiez votre requete. TikTok optimise la position 1 pour que vous arretiez de chercher.
TikTok uses a BERT language model to score how well your content matches its assigned category. If the match is strong (score >= 3.0), you get full ranking weight. If it's moderate (score >= 1.0), you lose two thirds of your weight. Below that, you're nearly invisible. There's no smooth gradient: you're either well-categorized or penalized.
TikTok utilise un modele de langage BERT pour scorer la correspondance entre votre contenu et sa categorie assignee. Si la correspondance est forte (score >= 3.0), vous obtenez 100% du poids de ranking. Si elle est moderee (score >= 1.0), vous perdez les deux tiers. En dessous, vous etes quasi-invisible. Pas de gradient lisse : soit vous etes bien categorise, soit penalise.
TikTok's search retrieval uses XLM-R, a multilingual BERT model (viking_xlmr_recall). It doesn't match keywords: it understands meaning. The model processes the intent behind your query, not the exact words. This means exact keyword optimization matters far less than topical and semantic relevance.
Le retrieval search de TikTok utilise XLM-R, un modele BERT multilingue (viking_xlmr_recall). Il ne fait pas du matching de mots-cles : il comprend le sens. Le modele traite l'intention derriere votre requete, pas les mots exacts. L'optimisation par mots-cles exacts compte donc beaucoup moins que la pertinence semantique et thematique.
The last 1,000 feed interactions are sent as features to the search model. Conversely, search_result_darwin_recall injects search-discovered videos into the FYP.
Les 1 000 dernieres interactions feed sont envoyees comme features au modele search. Inversement, search_result_darwin_recall injecte les videos decouvertes via le search dans le FYP.
A search triggered from a trend boosts viral results. A manual typed search favors semantic relevance. The search_source parameter changes which ranking signals dominate.
Une recherche declenchee depuis une tendance booste les resultats viraux. Une recherche manuelle tapee favorise la pertinence semantique. Le parametre search_source change quels signaux de ranking dominent.
The mall rerank formula: (2000 x pctr x show + 0.05) ^ 4. Doubling your click-through rate multiplies your score by 16. This is the single most disproportionate lever in TikTok Shop.
La formule de reranking mall : (2000 x pctr x show + 0.05) ^ 4. Doubler votre taux de clic multiplie votre score par 16. C'est le levier le plus disproportionne de TikTok Shop.
CTCVR dominates reranking (alpha=2, beta=100). Raw CTR alone: zero weight. Raw GMV alone: zero weight. TikTok ranks by the probability you'll click AND buy, not by how expensive the product is.
Le CTCVR domine le reranking (alpha=2, beta=100). Le CTR seul : poids zero. Le GMV seul : poids zero. TikTok classe par la probabilite que vous cliquiez ET achetiez, pas par le prix du produit.
The eCPM formula includes (1 + p_multi_order) as a direct multiplier. Products that generate repeat purchases or bundle orders get a built-in ranking boost.
La formule eCPM inclut (1 + p_multi_order) comme multiplicateur direct. Les produits qui generent des rachats ou des commandes groupees beneficient d'un boost de ranking integre.
key_seller_type > 0 triggers a x10,000 multiplier in raw rank. This classification doesn't appear in any official TikTok Shop program (Beginner/Standard/Premium/Pro, Official Shop, Gold Star, Silver Star). It's assigned server-side. You can't see it, request it, or know if you have it.
key_seller_type > 0 declenche un multiplicateur x10 000 dans le raw rank. Cette classification n'apparait dans aucun programme officiel TikTok Shop (Beginner/Standard/Premium/Pro, Official Shop, Gold Star, Silver Star). Elle est assignee cote serveur. Vous ne pouvez ni la voir, ni la demander, ni savoir si vous l'avez.
Score < 1.0 -> relevance drops to 10% (standard flow) or 0% (inner flow). A product poorly classified by BERT becomes invisible regardless of its conversion rate.
Score < 1.0 -> la pertinence tombe a 10% (flux standard) ou 0% (inner flow). Un produit mal classifie par BERT devient invisible quel que soit son taux de conversion.
Organic e-commerce content eCPM beta = 0.6. Sponsored e-commerce content eCPM beta = 0.01. That's a 60x advantage for high-performing organic content over paid placements in organic ranking positions.
Contenu e-commerce organique eCPM beta = 0.6. Contenu e-commerce sponsorise eCPM beta = 0.01. C'est un avantage de 60x pour le contenu organique performant par rapport aux placements payes dans les positions de ranking organique.
Contenu technique complémentaire issu de l'analyse
Additional technical content from the analysis
(~61.3s)
(+0.2s)
(+7s)
(+8s)
Le champ is_within_10vv (field 40) signifie "is within 10 vidéo views". Sa valeur false indique que l'utilisateur a dépassé ce seuil. Des champs adjacents (need_coldstart_force, need_heat_force) suggèrent un système plus nuancé qu'un simple seuil binaire.
The field is_within_10vv (field 40) means "is within 10 video views". Its false value indicates the user has passed this threshold. Adjacent fields (need_coldstart_force, need_heat_force) suggest a more nuanced system than a simple binary threshold.
Le cache local contient 6 vidéos FYP pré-chargées avec 5 catégories de diversification distinctes. Chaque vidéo inclut un champ play_time_prob_dist : un triplet [800ms, probabilité, durée attendue].
The local hidden contains 6 pre-loaded FYP videos with 5 distinct diversification categories. Each video includes a play_time_prob_dist field: a triplet [800ms, probability, expected duration].
vod_sr_class_v30_score
Déclaration manuelle via un toggle dans l'app. Le créateur peut changer son label à tout moment - mais TikTok a ses propres labels indépendants.
Manual declaration via an in-app toggle. The creator can change their label at any time - but TikTok has its own independent labels.
Détection automatique via le standard C2PA (Adobe, Microsoft). Analyse les watermarks invisibles et l'empreinte du contenu.
Automatic detection via the C2PA standard (Adobe, Microsoft). Analyzes invisible watermarks and content fingerprint.
moderation_aigc_label_type - Pipeline indépendant. Troisième avis qui peut contredire le créateur ET l'auto-détection.
moderation_aigc_label_type - Independent pipeline. Third opinion that can override both creator AND auto-detection.
| Information | Information | Champ | Field | Signification | Meaning |
|---|---|---|---|---|---|
| Source originale | Original source | firstSrc, lastSrc | D'ou vient le contenu | Content origin | |
| Source IA | AI source | firstAigcSrc, lastAigcSrc | Quel outil IA a étéutilisé | Which AI tool was used | |
| Outil d'édition | Editing tool | isTiktok, isCapcut | Créé dans TikTok ou CapCut | Created in TikTok or CapCut | |
| Pourcentage IA | AI percentage | aigcPercentageType | Proportion IA du contenu | AI proportion of content | |
| Watermark invisible | Invisible watermark | hasInvisibleWatermark | C2PA | ||
| Empreinte | Fingerprint | fingerprintID | Identifiant unique du contenu | Unique content ID |
Le créateur peut modifier son label - mais TikTok maintient 2 labels indépendants (auto-détection + modération). Avec le tracking du pourcentage IA, des watermarks invisibles et de l'historique des empreintes, TikTok a une vision complète de l'origine du contenu.
The creator can change their label - but TikTok maintains 2 independent labels (auto-detection + moderation). With AI percentage tracking, invisible watermarks and fingerprint history, TikTok has complete visibility into content origin.
Hexagones hiérarchiques, Distance uniforme entre voisins. Utilisé par TikTok pour l'indexation géospatiale et le seuil de déplacement (seuil de distance).
Hierarchical hexagons, Uniform distance between neighbors. Used by TikTok for geospatial indexing and movement threshold (seuil de distance).
Rectangles base-32, Compact, préfixe = inclusion géographique. Utilisé pour la transmission chiffrée au serveur.
Base-32 rectangles, Compact, prefix = geographic inclusion. Used for encrypted transmission to server.
Quadtree sphérique, Couverture uniforme, pas de distorsion polaire. Utilisé pour l'indexation alternative.
Spherical quadtree, Uniform coverage, no polar distortion. Used for alternative indexing.
Les coordonnées GPS brutes ne sont jamais envoyées en clair. Un paramètre configurable par le serveur sélectionne quel système de chiffrement est utilisé.
Raw GPS coordinates are never sent in clear text. A server-configurable parameter selects which encryption system is used.
Le paramètre de résolution H3 (envoyé par le serveur) contrôle le niveau de détail :
The H3 resolution parameter (sent by server) controls the detail level:
| Résolution H3H3 Resolution | SurfaceArea | Ce que TikTok saitWhat TikTok knows |
|---|---|---|
| 4 | ~1 770 km²~1,770 km² | Votre pays/régionYour country/region |
| 7 | ~5.16 km² | Votre villeYour city |
| 9 | ~0.105 km² | Votre quartierYour neighborhood |
| 11 | ~0.002 km² | Votre rueYour street |
| 13 | ~43 m² | Votre bâtimentYour building |
| 15 | ~0.9 m² | Votre position exacteYour exact position |
Le reporting n'est pas périodique mais déclenché par le mouvement : seuil de distance pour un nouveau report, plafond quotidien, intervalle minimum entre deux envois. Tracking réduit quand l'app est en arrière-plan.
Reporting is not periodic but triggered by movement: distance threshold for new report, daily cap, minimum interval between sends. Reduced tracking when app is in background.
Toutes les méthodes d'accès à la localisation passent par BPEA. Chaque demande de position exige un certificat valide, ce qui permet un audit interne de qui accède aux données.
All location access methods go through BPEA. Each location request requires a valid certificate, enabling internal audit of who accesses the data.
Chaque POI associé à une vidéo contient : nom du lieu, type, nombre de vidéos taguées, adresse complète (avec 5 niveaux hiérarchiques : pays > région > département > ville > quartier), IDs produits associés, statut de revendication.
Each POI associated with a video contains: location name, type, number of tagged videos, full address (with 5 hierarchical levels: country > region > department > city > district), associated product IDs, claim status.
Le champ poi_boost (Section 6) utilise les données de POI pour booster
le contenu géographiquement pertinent. Si vous taguez un lieu précis, votre vidéo
peut être boostée auprès des utilisateurs proches de ce POI.
The poi_boost field (Section 6) uses POI data to boost geographically
relevant content. If you tag a specific location, your video can be boosted to users
near that POI.
| Region | LocalisationLocation | Login socialSocial login | Stripping donnéesData stripping | Serveur APIAPI Server | ConsentementConsent |
|---|---|---|---|---|---|
| US | BloquéeBlocked | Google, Facebook, Twitter | 26 params supprimés pour mineurs (COPPA/FTC)26 params removed for minors (COPPA/FTC) | api19-va (tier 1) | Consent box USUS consent box |
| EU/EEA (32 payscountries) | Active | Google, Facebook, Twitter | NonNo | api16-va (tier 2) | Consent box EU (RGPD)EU consent box (GDPR) |
| KR (Corée du SudSouth Korea) | Active | + KakaoTalk | NonNo | api16-va (tier 2) | Consent box KR (PIPA)KR consent box (PIPA) |
| JP/TH (Japon, ThaïlandeJapan, Thailand) | Active | + LINE | NonNo | api16-va (tier 2) | Consent box standardStandard consent box |
| ROW (reste du monderest of world) | Active | Google, Facebook, Twitter | NonNo | api16-va (tier 2) | Consent box standardStandard consent box |
La géolocalisation précise est désactivée par défaut aux US et en Australie. Le Canada reçoit une précision réduite. Google One-Tap Sign-In est désactivé aux US.
Precise geolocation is disabled by default in US and Australia. Canada receives reduced precision. Google One-Tap Sign-In is disabled in the US.
Aux Etats-Unis, TikTok fait face a des menaces d'interdiction depuis 2020. Le code reflète cette pression : géolocalisation désactivée par défaut, 26 paramètres supprimés pour les mineurs (COPPA/FTC), serveur API dédié (tier 1). Ces restrictions techniques sont absentes des autres régions.
In the United States, TikTok has faced ban threats since 2020. The code reflects this pressure: geolocation disabled by default, 26 parameters removed for minors (COPPA/FTC), dedicated API server (tier 1). These technical restrictions are absent from other regions.