Introduction

My goal in this analysis is to investigate various questions about the fandom for Thai live-action GL/Yuri1 series on YouTube.

In particular, I want to look at the following questions:

People and companies creating YouTube video have access to a rich set of metrics, including information on the number of unique viewers and inferred demographic information.2 Unfortunately, such information is not available to the general public, and must be indirectly inferred using only publicly-available metrics.

Analysis software

For this analysis I use the R statistical software3 and the additional Tidyverse4 software for R.

I load the following R libraries, for the purposes listed:

I also define custom functions to style tables consistently and to convert ISO 639 language codes to language names.

Data sources

I obtained data for this analysis using a combination of the YouTube API8 and direct scraping of YouTube.com and Internet Archive web pages, followed by programmatic classification of videos into types and subsequent manual review to correct video classifications where needed. See the “Methodology” section below for more information.

I produced multiple CSV files as input to the analysis, all stored in the data subdirectory. See the “Data Codebook” section below for full details on the data files and variables.

Verifying the data files

I check the MD5 hash values for all the CSV files to be used in the analysis, and stop if the contents are not what are expected.

Loading the data

I load the data from the CSV files into a set of tables (“tibbles” in Tidyverse jargon).

Data integrity check

I do a basic integrity check to verify that the number of video entries in the series_videos tibble matches the number of videos in series_extras and series_types, and likewise for reaction_videos, reaction_extras, and reaction_types.

Analysis

Preliminary analysis

I do some basic exploratory data analysis, starting with the total number of videos in the dataset, the earliest dates of publication, and the latest dates of publication.

The core datasets correspond to the following:

  • 76 full-length series and 81 short series
  • 3,867 videos containing long and short series episodes and related official material (e.g., trailers, behind the scenes videos, etc.), published between 14 July 2021 and 11 February 2026
  • 3,881 unofficial reaction videos from independent creators, published between 26 July 2019 and 15 February 2026
  • language determinations for 1,792,248 comments on official videos and 151,720 comments on unofficial reaction videos
  • information on 347,008 commenters submitting comments for official videos and 27,426 commenters submitting comments for unofficial reaction videos, including inferred native languages for 324,029 and 26,879 of them respectively.

Viewers vs. fans

Public YouTube data (e.g., as made available via the YouTube public API), includes a count of “views” for each video; a view is counted when a viewer intentionally watches a video for at least thirty seconds.9 (“Intentional” here means that the user deliberately clicked on the video, as opposed to it autoplaying for some reason.) This definition results in two issues when trying to estimate the number of viewers from the number of views.

First, a given viewer may watch only a small portion of a Thai GL-related video, perhaps only a few minutes of an hour-long episode. For example, someone may have linked to a particular portion of a video (i.e., using the t= timestamp parameter of a YouTube URL) and posted that link to a social media site. A person reading the social media post and clicking on the link would likely watch only that portion of the video, and no others.

Second, a given viewer may watch a given video (or portion of a video) more than once. The rewatches will be counted as additional views as long as they meet the basic criteria (intentional watching for at least thirty seconds).

An example illustrating both these issues is the most-watched YouTube video for the Thai GL series Gap, part two (of four) of episode nine, which has over fifty-seven million views at the time of writing. This video contains a sensual scene featuring the main couple that lasts several minutes and, per the YouTube web interface, contains the “most replayed” portions of the video.

We cannot take this inflated view count and conclude that there are over fifty milion fans of Thai GL series. Instead we must have a reasonable definition of how to distinguish a Thai GL fan from a more casual viewer, and then some way to use public YouTube data to use this distinction to estimate the number of fans.

For the purposes of this analysis I define a fan as someone who has watched all episodes of two or more Thai GL series. This distinguishes fans in this sense from people who may have watched only one series (e.g., Gap) and no others, or who may have only viewed isolated scenes from a series (e.g., as posted to social media). Below I discuss in more detail how to estimate the number of Thai GL fans according to this definition.

Estimating the total number of fans

I’ll start with the total number of fans. Based on the available YouTube data, there are two possible ways to estimate the overall size of Thai GL fandom:

  • Look at the number of views on particular series or individual videos. This can provide an upper limit on the number of fans, since (a discussed above) casual viewers may contribute to view counts, and a given fan may watch a given video more than once.
  • Look at the number of fans subscribed to channels that produce Thai GL series. This provides a lower limit on the number of fans, since a given fan may or may not subscribe to any channels.

Estimating fandom size based on series episode views

I first attempt to estimate the total number of Thai GL fans based on the number of views of videos comprising official series episodes or compilations. (Compilation videos collect together multiple episodes. They are commonly used with shorter series.)

I propose estimating the number of fans based on view counts of the least-watched episodes (or parts of episodes) of Thai GL series. Per my definition above, a fan watching a given series will likely watch all videos comprising episodes of that series, including the least-watched videos in the series. Casual viewers (non-fans) may watch some episodes or parts of episodes, and fans may rewatch some episodes or parts of episodes, but this activity is likely to be at a minimum for the least-watched video in the series.

The least-watched video may still have some rewatches, so at best it gives an upper limit on the number of viewers of that video. But that upper limit is lower than than we might obtain by looking at the view counts of other videos in the series.

In the table below, for each Thai GL series I show the minimum number of views for all compilations, episodes, and parts of episodes for that series. I exclude the “rerun” episodes of Gap in order to focus on the original airing. I also calculate the median and maximum number of views as a comparison. I present the results for the top twenty-five series in terms of the minimum numbers of views across the set of videos for each series.

Top 25 Thai GL Series by Minimum Episode Views
Series Minimum Views Per Episode Video Median Views Per Episode Video Maximum Views Per Episode Video Date of First Episode
Gap 7,641,196 15,657,322 57,360,903 2022-11-19
Blank 4,106,135 6,078,562 35,789,010 2024-03-02
Affair 2,083,251 3,261,334 22,875,057 2024-08-30
The Loyal Pin 1,921,372 3,339,335 20,724,853 2024-08-04
My Secret Tutor 1,713,909 1,713,909 1,713,909 2024-10-05
Pluto 1,573,297 2,054,400 11,113,105 2024-10-19
Poisonous Love 1,472,675 2,764,232 10,420,331 2025-09-20
Dangerous Queen 1,280,012 1,680,300 3,610,448 2025-10-05
Service Charge 1,215,461 1,414,208 1,432,875 2022-12-20
Us 1,198,722 2,284,668 5,652,016 2025-01-18
The Secret of Us 1,056,812 2,501,914 6,400,401 2024-06-26
I Still Remember the Feeling 1,041,857 1,041,857 1,041,857 2023-11-01
Club Friday S16: Love Bully 1,020,258 1,541,793 3,879,692 2024-06-07
My Marvellous Dream is You 1,012,791 1,505,812 14,592,191 2024-05-08
Share House 985,105 2,277,992 3,042,879 2024-07-16
Show Me Love 938,640 1,484,954 5,382,029 2023-02-28
Love of Secret 923,138 923,138 923,138 2022-11-21
Fate's Whisper 866,262 866,262 866,262 2025-03-05
A Piece of Memory 836,585 836,585 836,585 2025-01-04
23.5 751,116 961,484 3,324,867 2024-03-08
ClaireBell 726,351 1,357,478 2,783,203 2025-11-01
Favorite Girl 725,898 1,043,966 1,362,034 2022-09-14
Unlock Your Love 724,296 901,255 4,901,953 2024-09-11
Mate 712,611 1,606,994 3,500,701 2024-11-26
Queendom 706,476 890,436 1,074,396 2025-08-14

If we ignore Gap and Blank as outliers, the least-watched videos for the most popular Thai GL series get at least a million views, and in some cases up to two million views. Also, not every fan is likely to sample episodes from every series. Thus, for example, the viewership for the least-watched episode of Pluto likely overlaps only partially with the viewership for the least-watched episodes of Dangerous Queen and Poisonous Love.

Using this measure, I therefore estimate the total number of Thai GL fans as being at least one million, and possibly as high as two or even three million.

Estimating fandom size based on channel subscribers

I next attempt to estimate the number of fans by looking at the number of subscribers for the top twenty-five channels, as retrieved during the period of data collection:

Subscribers to YouTube Channels Producing Thai GL Series
Channel Subscribers
ช่อง one31 44,400,000
WorkpointOfficial 43,500,000
Ch3Thailand 36,700,000
GMMTV OFFICIAL​​ 20,100,000
ZENSE MORE 8,340,000
CHANGE2561 5,940,000
หม่อมถนัดแดก 4,950,000
IDOLFACTORY OFFICIAL 3,500,000
3Plus 3,460,000
Studio Wabi Sabi 2,670,000
GrandTV 2,480,000
WONDERFRAME 2,160,000
MONO Original 2,070,000
MeMindY Official 1,910,000
JPC Series 1,550,000
JPC Media 1,380,000
Star Hunter Entertainment 1,250,000
NineStarStudios 886,000
WeTV Original 811,000
Mahanakhon Channel 576,000
Kongthup's Channel 464,000
COPY A BANGKOK 445,000
NORTH STAR ENTERTAINMENT 420,000
SHAKESHOULDER FILMMAKER 390,000
H'our channel 313,000

Some of the channels listed produce videos of all types, while others primarily produce BL series and have only recently produced GL series. Only a few channels are devoted exclusively or almost exclusively to GL series; of those, the following each have over 300,000 subscribers:

  • IdolFactory started the current Thai GL boom with Gap. Although IdolFactory has produced some BL series, it is much more famous for its GL series, which also include The Loyal Pin.
  • JPC Series produces short GL series, with episodes typically around 15 minutes in length and entire series less than 2 hours in length.
  • NineStar Studios released Blank, one of the most popular post-Gap GL series; it produces GL series exclusively.
  • North Star Entertainment is a relatively new production company producing GL series with full-length episodes.
  • Like JPC Series, H’Our Channel produces short GL series.

The number of subscribers to these channels likely underestimates the number of fans, since not all fans may bother to subscribe to a channel. If we discount some of the IdolFactory subscribers (who may be watching BL shows) and use the subscriber counts for the other channels as lower bounds, then we get an an estimate of at least one million fans and possibly more. This is roughly consistent with the number of fans estimated based on the number of views.

Different types of fans

I not only want to create estimates of the number of fans of Thai GL series, I also would like to distinguish between different types of fans based on their types and numbers of fan-related activities. As with estimating the total number of fans, if possible I’d like to distinguish between groups of fans using the available YouTube data.

I propose that we can distinguish at least two smaller groups within the overall Thai GL fandom:

  • Fans who have shown a higher level of engagement with Thai GL series (“engaged fans”), for example “liking” YouTube videos of series epiodes or commenting on them.
  • Fans who have displayed especially high levels of engagement (“superfans”), for example, seeking out and commenting on independently-produced videos about Thai GL series.

Below I discuss in more detail how I estimate the size of these groups.

Estimating the number of more engaged fans

As discussed above, I define an “engaged” fan as one who does not just watch videos or subscribe to video channels, but rather goes beyond that by interacting with videos or with fellow fans.

YouTube provides three main mechanisms for such interactions, each of which might be useful in estimating the number of more engaged fans:

  • We can look at the number of “likes” on series videos. Since a viewer can “like” a video only once, this also provides a lower bound on the number of viewers of particular videos.
  • We can look at the number of fans who submit at least one comment in response to a video.
  • We can look at the number of views on official videos that are auxiliary to the main videos for series episodes, such as “behind the scenes” videos or “reaction” videos.

Estimating engaged fandom size based on series episode likes

I first look at the number of likes. To avoid double counting, I look only at official series episodes (ignoring compilations that collect together multiple episodes) and for each series take the median number of likes for all episodes and parts of episodes for that series. I present the results for the top twenty-five series in terms of likes.

Top 25 Thai GL Series by Episode Likes
Series Median Likes Per Episode Video Median % Likes to Views
Gap 197,365 1.4
Blank 96,205 1.5
The Loyal Pin 89,039 2.7
Affair 62,339 1.9
Pluto 58,160 2.6
Poisonous Love 57,287 2.0
Us 52,402 2.3
Dangerous Queen 50,277 2.8
The Secret of Us 39,418 1.4
My Marvellous Dream is You 37,502 2.4
ClaireBell 36,961 2.8
Roller Coaster 35,389 2.0
Music Story: Losing Control 34,327 1.6
Mate 33,330 2.0
Somewhere Somehow 32,347 3.1
Lucky My Love 28,329 2.4
Club Friday S16: Love Bully 28,152 1.8
Love Senior 27,105 1.7
Queendom 23,704 2.6
23.5 23,093 2.4
Apple My Love 22,835 2.2
Whale Store XOXO 22,070 4.7
Unlock Your Love 22,062 2.4
Share House 19,694 1.3
MuTeLuv: Hello, Is This Luck? 19,417 4.0

The median number of likes as a percentage of views is actually relatively low for most of these series compared to industry metrics. “A common benchmark is roughly four to five likes for every 100 views.”10 However the ratio of likes to views is likely misleading for videos that have many people watching them more than once. As noted above, a video can be watched multiple times but liked only once.

Seventeen series have median likes per series video above twenty-five thousand, and six have between fifty and a hundred thousand per video. (I ignore Gap as being an outlier.) As noted above, every like corresponds to a viewer, so on the order of fifty to a hundred thousand fans are engaged enough to like series videos.

However, it’s likely that this underestimates the number of more engaged fans, since not all fans will watch and like videos for every series, and the set of fans liking the videos for one series may only partially overlap with the set of fans liking the videos for some other series. Thus it seems reasonable to estimate the number of more engaged fans as being at least a hundred thousand and possibly more.

Estimating engaged fandom size based on comments on videos

A second approach to estimate the number of more engaged fans is to look at the number of people who have left comments on series-related videos. (In this dataset this includes comments on series-related videos such as trailers in addition to comments on series episodes themselves.)

I create a table showing the number of commenters who have left at least one comment, at least two comments, and so on.

Numbers of Commenters Submitting at Least N Comments for Thai GL Series Videos
Number of Comments Number of Commenters Meeting that Threshold
1 347,008
2 164,509
3 108,157
4 80,692
5 64,328
6 53,422
7 45,468
8 39,507
9 34,784
10 31,108

Leaving a comment is a more significant action than liking a video, since the viewer must make at least a minimal effort to compose the comment, even if just to post a heart or other emoji in reply.

By this measure the number of more engaged fans is considerably more than estimated above, on the order of a hundred to three hundred thousand, or about a tenth of my estimate of the total number of fans.

Estimating the number of “superfans”

I next want to create some estimates of the number of “superfans” of Thai GL series, i.e., fans who’ve shown the highest levels of engagement with those series.

There are at least three potential ways to estimate the number of superfans:

  • Look at the number of fans who submit the most comments in response to series-related videos.
  • Look at the number of views on independently-produced reaction videos.
  • Look at the number of comments on independently-produced reaction videos.

Estimating the number of superfans based on reaction video views

I next look at the number of views for unofficial reaction videos that feature independent creators reacting to and commenting on official videos for Thai GL series. (Typically the reaction videos are for series episodes, but they can also be reactions to other official videos, such as trailers and pilots.)

Fans must seek out these independently-created reaction videos, and they are typically relatively long (comparable to the length of the series episodes on which they comment). Thus the number of views of such videos may be a reasonably good metric for estimating the number of superfans.

In the following table I present median views of independently-created reaction videos for various series. The table is limited to the top twenty-five series as measured by such views.

Views for Independent Reaction Videos for Thai GL Series
Series Median Views Per Independent Reaction Video
Gap 23,232
Show Me Love 9,692
Stay with Me 9,554
Enemies With Benefits 7,320
Blank 6,971
Delete Your Past 6,450
Chasing Love 5,978
The End 5,836
Wish Upon A Star 5,679
The Secret of Us 5,012
Moonshadow 4,827
Hometown Romance 4,371
Cranium 4,261
Bake Love Feeling 3,876
AI Girl 3,617
Under Her Rules 3,090
23.5 3,055
Poisonous Love 3,019
Is This Love? 3,001
Affair 2,944
Heart Code 2,885
The Loyal Pin 2,820
Mate 2,692
Frozen Valentine 2,673
Us 2,572

The estimate of the number of superfans based on this measure is roughly consistent with the estimate based on commenting activity: Leaving aside the outlier of Gap, the number of superfans is estimated to be on the order of ten thousand or less.

Estimating the number of superfans based on reaction video comments

Finally, I look at the number of fans commenting on independently-created reaction videos, using the same measure I employed earlier: the number of fans who’ve submitted at least one comment, the number of fans submitting at least two comments, and so on.

Numbers of Commenters Submitting at Least N Comments for Thai GL Independent Reaction Videos
Number of Comments Number of Commenters Meeting that Threshold
1 27,426
2 13,526
3 8,947
4 6,535
5 5,126
6 4,201
7 3,586
8 3,082
9 2,732
10 2,427

As with comments on series-related videos, the number of comments drops off fairly rapidly, with most people submitting relatively few comments.

This pattern continues as we look at people who’ve submitted even more comments, as shown in the following graph, which shows the number of comments submitted by more active commenters relative to less active commenters.

Again we see a highly-skewed distribution of commenting activity (power-law or log-normal distribution), with relatively few fans generating the bulk of comments.

Based on this measure it appears that the number of superfans is a few thousand at most.

Summary on the size of Thai GL fandom

Based on the estimates above, I hypothesize that the fandom for Thai GL series can be roughly categorized as follows:

  • The overall fandom mostly consists of fans who just watch Thai GL series episodes on YouTube and sometimes subscribe to producer channels to keep track of new releases. The size of the overall fandom is on the order of a million or more, possibly as high as two or even three million.
  • More engaged fans also “like” videos for Thai GL series and submit comments from time to time. The size of this group is on the order of a hundred thousand or more, possibly as high as two or three hundred thousand.
  • Superfans submit a lot of comments on official videos and also seek out and comment on independently-created reaction videos. The size of this group is on the order of a few thousand, with ten thousand as a likely upper bound.

Looking at growth in the fandom over time

In this section I attempt to measure the growth over time of the fandom for Thai GL series. Unfortunately, the YouTube public API does not provide historical data for views, likes, and subscriber counts, so I must use other ways to obtain whatever historical data is available.

There are at least three ways we can estimate the growth in the fandom:

  • Looking at Internet Archive snapshots of pages for individual YouTube videos can enable extraction of counts for views, likes, and comments displayed on those pages.
  • Looking at Internet Archive snapshots of pages for YouTube channels can enable extraction of subscriber counts displayed on those pages.
  • Looking at when a given commenter posted their first comment enables reconstruction of the cumulative number of commenters over time.

The data obtained through the first two methods is often only approximate, since displayed counts are often rounded; for example, the number of views might be displayed as “2M” instead of an exact number between two and three million. It is also sporadic, since the Internet Archive may take a snapshot of a given page only once every month or two at best. Nevertheless the data can give at least a rough picture of historical values for views, likes, comments, and subscribers for selected videos and channels.

The dataset available for this analysis contains some historical data on subscriber counts for all channels, along with historical data on views, likes, and (sometimes) comments for the first videos (episode 1, part 1) for the popular series Gap, Blank, and The Loyal Pin.

Growth in views and likes for selected episode 1/1 videos

I first look at the historical growth in views for the episode 1, part 1 videos for Gap, Blank, and The Loyal Pin. Anyone interested in these series would likely have watched at least the first part of the first episode, so this gives a good upper bound of overall fan interest.

The data for Gap shows a rapid rise in the number of views during the first months while the series was airing, then a less steep rise in views until early 2025, at which point the number of views apparently leveled off. This leveling off was likely due to three factors: rounding in the data (as discussed above), the release in February 2025 of “rerun” episode videos for Gap that were not divided into parts, and saturation of the prospective audience.

Both Blank and The Loyal Pin show similar patterns of relatively steep growth followed by slower growth. However the period of initial growth is less intense than for Gap, likely because at the time Blank and The Loyal Pin were released there were other Thai GL series competing for fans’ attention.

The next graph shows the associated growth in the number of YouTube “likes” for these three videos.

The patterns are similar to those seen for the number of views, except that episode 1, part 1, of the The Loyal Pin elicited more fan engagement (in the form of likes) relative to views than did Blank.

The number of likes for The Loyal Pin and Blank are consistent with my earlier estimate that the number of more engaged fans is on the order of a hundred thousand or more.

Subscriber growth for GL-focused YouTube channels

The next measure I look at is the growth in subscribers over time for IdolFactory (producers of Gap and The Loyal Pin) and NineStar Studios (producers of Blank).

Prior to the release of Gap in November 2022, IdolFactory had a base of about five hundred thousand subscribers, presumably fans of IdolFactory’s previous BL series. After the release of Gap IdolFactory quickly acquired over a million new subscribers, presumably GL fans attracted to Gap. Subscriber growth continued at a lesser pace over subsequent years before leveling off. The release of The Loyal Pin in August 2024 does not appear to have significantly affected that growth trajectory.

In contrast, NineStar Studios was a new production company whose YouTube channel had no subscribers prior to the release of Blank. It quickly acquired almost a million subscribers and has remained at that level ever since.

Growth of commenters over time

The third option for measuring the growth of the Thai GL fandom is looking at the growth in the number of people over time who have commented on series episodes and series-related videos, based on the dates on which particular commenters posted their first comment. This is especially useful as a way to gauge the growth in the number of more engaged fans.

Prior to the release of Gap in November 2022, the number of commenters was relatively small. Presumably anyone who commented during that period was likely commenting on other types of videos (e.g., BL series).

With the release of Gap in November 2022, the number of commenters grew rapidly to almost one hundred thousand while Gap was airing. It then grew more slowly during the period of 2023 and early 2024 in which almost no new Thai live-action series were released, before resuming more rapid growth once more after the release of several new GL series beginning in March 2024. (There were only 51,880 new commenters in 2023 vs. 147,239 new commenters added in 2024.)

The pace of growth slowed again somewhat after mid-2024, and growth has continued steadily since then, with 84,198 new commenters in 2025. (The most recent data may indicate another leveling off, but it’s likely too soon to tell.)

Inferring the locations of fans of Thai GL series

Producers of YouTube videos have access to analytics that can tell them (to a reasonable degree of assurance) the countries in which viewers of their videos are located.

In the absence of such private data there is no simple way to determine where fans of Thai GL series are located. However, we can at least infer a region or (in some cases) a country of origin for a subset of fans, namely those who leave comments on videos.

The table below shows the inferred languages of commenters on Thai GL series and related videos, based on the detected languages of their comments. Note that if a fan comments both in English and in a language other than English, their language is inferred to be the non-English language. Only languages with 1% or more of commenters are shown.

Languages for Commenters on Thai GL Series-Related Videos
Commenter Language Commenters % of Commenters
English 90,009 42
Thai 54,996 25
Spanish 26,852 12
Portuguese 20,412 9
Vietnamese 7,913 4
Chinese 2,662 1

English speakers constitute somewhat less than half of all commenters, Thai speakers about a quarter, and Spanish and Portuguese speakers about a tenth each. There’s also a significant number of Vietnamese speakers and a smattering of Chinese speakers.

Since my primary interest is in fans outside Thailand (“interfans”), I re-do the table omitting Thai speakers.

Non-Thai Languages for Commenters on Thai GL Series-Related Videos
Commenter Language Commenters % of Commenters
English 90,009 56
Spanish 26,852 17
Portuguese 20,412 13
Vietnamese 7,913 5
Chinese 2,662 2
Indonesian 1,783 1

English speakers make up over half of non-Thai fans commenting, with Spanish and Portuguese speakers about a sixth and an eighth of all non-Thai commenters respectively.

As noted above, commenters vary extremely widely in the number of comments they submit, and it’s possible that speakers of some languages comment more frequently than others. I therefore do another pair of tables showing the distribution of languages seen in comments, not commenters.

Languages of Comments on Thai GL Series-Related Videos
Comment Language Comments % of Comments
English 476,156 51
Thai 198,520 21
Spanish 104,679 11
Portuguese 90,342 10
Vietnamese 24,405 3

Here is the same table omitting comments in Thai.

Non-Thai Languages of Comments on Thai GL Series-Related Videos
Comment Language Comments % of Comments
English 476,156 65
Spanish 104,679 14
Portuguese 90,342 12
Vietnamese 24,405 3

When judged by the number of comments, English is even more dominant, accounting for nearly two-thirds of all comments.

Finally, one relevant feature of the YouTube comment system is that it allows viewers to easily translate comments in another languages into their own language. This allows commenters to participate in comment threads even when most of the comments in the thread are in a language or languages they do not understand.

The following table attempts to judge how prevalent this behavior is, by looking at the number of comment threads in which comments are in two or more languages.

Multi-language Comment Threads on Thai GL Series-Related Videos
# of Languages Comment Threads % of Comment Threads
1 76,647 66
2 33,653 29
3 4,583 4
4 875 1

Fully a third of all comment threads feature comments in two or more languages, highlighting the fact that the fandom for Thai GL series is truly an international one in which fans can relatively easily interact across language barriers, at least in the context of YouTube.

Producers’ responses to the growth in the fandom for Thai GL series

As the number of fans of Thai GL grew after the release and subsequent success of Gap, other Thai production companies began releasing GL series on YouTube and other services. In this section I look at quantitative data relating to YouTube releases.

Number of videos released per month

The following graph shows the number of Thai GL series episodes and other series-related videos released in each month since November 2022 (when Gap was released). To avoid double-counting, this graph counts only the first part of multi-part videos (e.g., a single episode split into four parts on YouTube).

The number of series-related videos roughly tracks the number of episodes released, since many of the series-related videos are directly related to episodes, including cast reaction videos, behind-the-scenes videos, and next episode previews.

Growth in the number of available hours of Thai GL videos

New fans of Thai GL series have access to an increasing amount of video material, including episodes of older and newer series and related videos. The following graph shows the cumulative number of hours of official Thai GL videos available on YouTube.

This overstates the number of video hours to some extent, since some series (most notably Gap) have released episodes initially in parts and then later re-released them as single videos. However it remains apparent that a new fan could spend multiple weeks or months just watching Thai GL series already available on YouTube.

Growth in independently-created reaction videos to Thai GL series

As the number of Thai GL series distributed on YouTube has grown, this growth has opened up opportunities for independent YouTube creators to try to build audiences by creating their own reaction videos to those series’ episodes.

The following graph shows the cumulative number of independent reaction videos available on YouTube over time.

Most independent reaction videos are approximately as long as the series episodes they’re reacting to. Comparing this to the previous graph, it’s clear that the number of hours of reaction videos is an order of magnitude larger than than number of hours of series episodes. Even a superfan could watch only a fraction of the available reaction videos.

Availability of subtitles for Thai GL series

As noted above, producers of Thai GL series have access to private YouTube data that can tell them which countries viewers are located in. One way producers can use that data is to inform decisions on which languages to provide subtitles for with their videos.

In the table below I look at the subtitles available for 381 episodes of Thai GL series that have subtitles for at least one language or language variant, to see the languages for which producers most often provide subtitles. I ignore languages with subtitles in less than twenty percent of episodes.

Top Subtitle Language Variants for Thai GL Series Episodes
Language % Episodes Subtitled in Language
English 74
Thai 63
Spanish 38
Vietnamese 38
Korean 36
Indonesian 33
French 33
English (United States) 33
Russian 30
Portuguese 29
Japanese 28
German 27
Portuguese (Brazil) 26
Filipino 24
Italian 24
Burmese 23
Chinese 22
Chinese (Traditional) 22
Ukrainian 20

Some of these languages are substantially identical as far as the intended audience is concerned, such as “English” vs. “English (United States)” or “Portuguese” vs. “Portuguese (Brazil).” Others represent distinct audiences, such as “Chinese (Traditional)” for Taiwan and “Chinese (Simplified)” for China.

In the next table I collapse together substantially identical language variants while retaining those addressing distinct audiences. In particular, for Chinese subtitles I collapse “Chinese” (“zh”), “Chinese (Simplified)” (“zh-Hans”), and “Chinese (China)” (“zh-CN”) into “Chinese,” while keeping the other Chinese variants separate.

Top Subtitle Languages for Thai GL Series Episodes
Language % Episodes Subtitled in Language
English 99
Thai 63
Portuguese 44
Spanish 40
Vietnamese 38
Korean 36
Chinese 35
Indonesian 33
French 33
Russian 30
Japanese 28
German 27
Filipino 24
Italian 24
Burmese 23
Chinese (Traditional) 22
Ukrainian 20

The top five languages for subtitles match the top five languages used by commenters, with Thai GL series almost always published with English subtitles. Other languages beyond the top five address major markets for Thai GL series in East Asia, Southeast Asia, and Europe.

Producer-supplied keywords for Thai GL series

When producers of Thai GL series publish videos to YouTube, they can associate lists of keywords with each video. These keywords can then help surface those videos when viewers enter YouTube search terms containing those keywords—a form of search engine optimization (SEO) as applied to YouTube.

The following table shows the top twenty-five keywords associated with Thai GL series episodes and related videos, along with the percentage of all videos for which each keyword is used. Keywords in English have been converted to lower-case.

num_series <- series_keywords |> distinct(video_id) |> nrow()

series_keywords |>
  mutate(video_keyword = str_to_lower(video_keyword)) |>
  summarize(keyword_pct = (100 * n()) / num_series, .by = video_keyword) |>
  arrange(desc(keyword_pct)) |>
  head(25) |>
  apa(title = "Top 25 Keywords for Thai GL Series-Related Videos") |>
  cols_label(
    video_keyword = "Keyword",
    keyword_pct = "% Videos with Keyword",
  ) |>
  cols_align(align = "left", video_keyword) |>
  cols_align(align = "right", keyword_pct) |>
  fmt_integer(columns = keyword_pct)
Top 25 Keywords for Thai GL Series-Related Videos
Keyword % Videos with Keyword
yuri 36
หญิงรักหญิง 27
gl series 24
gmmtv 23
ยูริ 22
gl 20
คู่จิ้น 20
lesbian 19
sapphic 18
gmm 18
lgbt 17
เลสเบี้ยน 17
freenbecky 16
ฟรีนเบค 15
wlw 13
gmm grammy 13
thai gl series 13
change 13
change2561 13
เช้นจ์ 2561 13
ฉอด change2561 13
ช่อง gmm ออนไลน์ 13
พี่ฉอด 13
พี่ฉอด สายทิพย์ 13
จีเอ็มเอ็ม ทีวี 13

The most commonly-used keywords fall into three general classes:

  • keywords indicating the genre of the video: “yuri”, “หญิงรักหญิง” (Thai for “women who love women”), “gl series”, “ยูริ” (Thai transliteration of “yuri”), “gl”, “lesbian”, “sapphic”, “lgbt”, “เลสเบี้ยน” (Thai transliteration of “lesbian”), “wlw”, and “thai gl series”
  • keywords identifying the series producer: “gmmtv”, “gmm”, “gmm grammy”, “change”, “change2651”, “เช้นจ์ 2561” (Thai transliteration of “Change2561”), “ฉอด change2561” (“Chod Change2561”, referring to the nickname of Saithip Montrikun Na Ayudhaya, CEO of Change2561 and host of the Club Friday show), “ช่อง gmm ออนไลน์” (“GMM online channel”), “พี่ฉอด” (“P’Chod”), “พี่ฉอด สายทิพย์” (“P’Chod Saithip”), and “จีเอ็มเอ็ม ทีวี” (“GMM TV”).
  • keywords identifying the general concept of a GL (or BL) couple, e.g., “คู่จิ้น” (“khu jin” or “imagined couple”)11, or referring to specific GL couples, e.g., “freenbecky” and “ฟรีนเบค” (“freenbeck”)

It’s also worth noting some keywords not commonly used for Thai GL series. The first is “Series Y”, a blanket term for both BL (“yaoi”) and GL (“yuri”) content. It is likely not commonly used because it is more closely associated with BL series.

The others are “tom” (for “tomboy”) and “dee” (for “lady”), traditional Thai terms very roughly equivalent to “butch” and “femme” respectively.12 These terms are likely not commonly used as keywords for Thai GL series for two reasons: First, the terms are not well-known in the international Thai GL fandom. Second, they are likely not associated with Thai GL series by Thai fans themselves, since the pairings in almost all Thai GL series do not correspond to the traditional tom and dee categories.

Appendices

Methodology

I used the r/GirlsLove wiki on Reddit to compile two lists, of full-length Thai GL series and of short Thai GL series, for which videos were available on YouTube; I omitted series that featured GL pairs only as side couples and not as the main protagonists. This produced the files series.csv and short_series.csv.

I used the YouTube URLs from the resulting lists of series and short series to programmatically retrieve the producer handles for the videos and expand a manually-compiled list of Thai GL producers to create a more comprehensive list of producers and their associated YouTube channel IDs, the key components of the URLs for the channels’ YouTube pages. This produced the file producer_channels.csv.

I used the producer channel IDs to programmatically retrieve all YouTube playlists for each producer and then filtered the results to include only playlists associated with the series and short series previously compiled. I then used the filtered playlist IDs (the key components of the playlists’ YouTube pages) to programmatically retrieve a list of all official YouTube videos associated with Thai GL series and short series. This produced the file series_video_info.csv.

I followed a somewhat different strategy to compile a list of independent producers of videos reacting to Thai GL series. I started with a manually compiled list of potential reactors, then programmatically searched YouTube for videos whose titles contained both the word “Reaction” (or similar words and phrases in English, Spanish, and Portuguese) and the name of one of a set of popular Thai GL series. That list of videos was then used to compile an updated list of independent creators of reaction videos and their associated YouTube channel IDs. This produced the file reactor_channels.csv.

I then used the reactor channel IDs to programmatically look for playlists for those reactions, retrieve videos from those playlists, and filter the results to contain only videos relating to Thai GL series. This produced the file reaction_video_info.csv containing information about independently-created reaction videos for Thai GL series.

These two master CSV files of series videos and reaction videos were then used to programmatically retrieve further data about the videos: additional metadata for the videos (series_video_extras.csv and reaction_video_extras.csv), subtitle languages for the videos (series_video_subtitles.csv and reaction_video_subtitles.csv), and keywords associated with the videos (series_video_keywords.csv and reaction_video_keywords.csv).

The master CSV files were also used to produce two further sets of files. First, I programmatically retrieved comments for all videos in series_video_info.csv and reaction_video_info.csv and used the resulting data to produce the following:

  • languages of comments, as determined by a machine-learning model (series_comment_languages.csv and reaction_comment_languages.csv)
  • the languages used in comment threads (series_thread_languages.csv and reaction_thread_languages.csv)
  • languages of comment authors, as inferred from the languages of their comments (series_commenter_languages.csv and reaction_commenter_languages.csv)
  • other metadata about comment authors, including numbers of comments and dates of first commenting (series_commenter_info.csv and reaction_commenter_info.csv)

(Identities of commenters as found in the above files were anonymized by replacing their comment handles with randomly-generated IDs.)

Separately I programmatically created two files series_video_types.csv and reaction_video_types.csv to store additional information about Thai GL series videos and reaction videos. I programmatically determined Information such as the type of each video and any associated episode numbers and part numbers (within episodes) by extracting information from the titles of the videos.

I then manually reviewed all entries in series_video_types.csv to correct this information where appropriate. This resulted in removing some series as falling outside the scope of the analysis, including BL series with only incidental GL content and series for which videos were available to channel members only. I updated other CSV files to reflect these removals.

(At the time of writing I have not done a similar review for reaction_video_types.csv, since it was not needed for the purposes of this analysis.)

Finally, I did programmatic retrieval of archived YouTube pages for producer channels and select series video pages to produce historical data on numbers of subscribers, viewers, and related information. This produced the file producer_subscribers.csv for producer channels and the following files for the first-released videos (episode 1, part 1) of Gap, Blank, and The Loyal Pin:

  • gap_1_1_snapshot_metrics.csv
  • blank_1_1_snapshot_metrics.csv
  • tlp_1_1_snapshot_metrics.csv

Data Codebook

producer_channels.csv

This file contains information on Thai production companies that have distributed GL series and related videos on YouTube.

Each row represents one channel. The file contains 51 channels.

variable type description example
channel character YouTube channel handle including the @ prefix @gmmtv
channel_id character YouTube channel ID: a 24-character string beginning with UC assigned by YouTube and stable across handle changes UC8BzJM6_VbZTdiNLD4R1jxQ
channel_name character Channel display name as shown on YouTube GMMTV OFFICIAL

producer_subscribers.csv

This file contains current and historical data on the number of subscribers to the YouTube channels listed in producer_channels.csv. Current subscriber data was retrieved using the YouTube API. Historical subscriber data was retrieved by scraping channel web page snapshots on the Internet Archive.

Each row represents one channel at a particular date and time. The file contains subscriber information for 741 channel/date-time pairs.

variable type description example
channel character YouTube channel handle including the @ prefix @baanchanproduction
subscribers integer Subscriber count at the time of the snapshot 6240
datetime character Datetime of the snapshot; UTC ISO 8601 for current snapshots and local-time ISO 8601 for historical Wayback Machine snapshots 2026-02-16T23:51:54Z

reaction_comment_languages.csv

This file contains detected languages for individual comments on independently-created reaction videos; languages were inferred using the Python fastText module.13 (To avoid an incompatibility with the Python numpy module, I used a numpy2-compatible fastText version.14)

Each row represents one comment and its detected language. The file contains information for 151,720 comments.

variable type description example
video_id character YouTube video ID of the reaction video this comment was posted on n6kLoiAHoOc
comment_id character YouTube comment ID assigned by YouTube UgyN00XBDTddfw4mbPx4AaABAg
comment_language character ISO 639-1 language code detected by fastText for this comment pt
comment_language_score double fastText confidence score for the detected language (0 to 1) 0.9999141693115234

reaction_commenter_info.csv

This file contains information on people commenting on independently-created reaction videos to Thai GL series.

Each row represents one commenter and their associated information. The file contains information for 347,008 commenters.

variable type description example
commenter_id character Anonymous commenter identifier in the format C followed by a randomly-generated 9-digit number; joins to an unreleased file containing comment author handles C844365880
commenter_comments integer Total number of comments and replies posted by this commenter across all reaction videos 2
commenter_top_level integer Number of top-level comments (not replies) posted by this commenter 2
commenter_replies integer Number of replies posted by this commenter 0
commenter_first_date character Date of the commenter's earliest comment in YYYY-MM-DD format 2025-12-02
commenter_last_date character Date of the commenter's most recent comment in YYYY-MM-DD format 2026-02-08
commenter_likes integer Total number of likes received across all of this commenter's comments 3
commenter_replies_received integer Total number of replies received from other commenters on this commenter's top-level comments 0

reaction_commenter_languages.csv

This file contains detected languages for comment authors commenting on independently-created reaction videos. Languages were inferred using the Python fastText module as applied to comments by a given commenter.

In general the language determined for a commenter was the one for which their comments’ language had the highest confidence score as calculated by the fastText module. However, non-English languages were preferred to English if the non-English languages could be determined with a reasonably high degree of confidence (fastText language score of 0.9 or greater). This accounts for the case of commmenters whose native language is not English but who know English and sometimes use it when posting comments instead of their native language.

Each row represents one commenter and their detected language. The file contains information for 26,879 commenters.

variable type description example
commenter_id character Anonymous commenter identifier in the format C followed by a randomly-generated 9-digit number; joins to an unreleased file containing comment author handles C844365880
commenter_language character ISO 639-1 language code inferred as the commenter's native language based on their comment history pt
commenter_language_score double fastText confidence score associated with the language assignment (0 to 1) 0.9860324859619141

reaction_thread_languages.csv

This file contains information on the number of distinct languages used within comment threads for independently-created reaction videos; for more information on detected languages in reaction video comments see reaction_comment_languages.csv.

Each row represents one comment thread and its number of detected language(s). The file contains information for 102,402 comment threads.

variable type description example
thread_id character Comment ID of the top-level comment that started this thread UgyN00XBDTddfw4mbPx4AaABAg
video_id character YouTube video ID of the reaction video this thread is on n6kLoiAHoOc
thread_comments integer Total number of comments in the thread (top-level comment plus all replies) 1
thread_commenters integer Number of unique commenters in the thread 1
thread_languages integer Number of distinct languages detected across comments in the thread 1
thread_cross_language_replies integer Number of replies whose detected language differs from the top-level comment's language 0
thread_languages_per_comment double Ratio of distinct languages to total comments in the thread 1.000000
thread_languages_per_commenter double Ratio of distinct languages to unique commenters in the thread 1.000000
thread_cross_language_per_reply double Ratio of cross-language replies to total replies in the thread (0 for threads with no replies) 0.000000

reaction_video_extras.csv

This file contains more information about the videos in reaction_video_info.csv, including likes, views, and number of comments. This information was retrieved using the YouTube API.

Each row represents one video. The file contains information for 3,881 videos.

variable type description example
video_id character YouTube video ID: an 11-character string uniquely identifying the video ovySaTQOPxA
video_title character Video title as set by the reactor on YouTube 23.5 องศาที่โลกเอียง ✿ EP 1 [ REACTION ]
video_language character Default audio language of the video as reported by the YouTube Data API; BCP 47 language tag en
video_duration character Video duration in ISO 8601 duration format PT46M18S
video_view_count integer Total view count at the time of retrieval 15619
video_like_count integer Total like count at the time of retrieval 775
video_comment_count integer Total public comment count at the time of retrieval 21

reaction_video_info.csv

This file contains video IDs, titles, and other metadata for independently-created reaction videos commenting on Thai GL series and short series. This information was retrieved using the YouTube API.

Each row represents one video. The file contains information for 3,881 videos.

variable type description example
video_id character YouTube video ID: an 11-character string uniquely identifying the video ovySaTQOPxA
channel_id character YouTube channel ID of the reactor channel that posted this video UC0Q6JMcvDfcdJ6mKxzHrRPQ
video_title character Video title as set by the reactor on YouTube 23.5 องศาที่โลกเอียง ✿ EP 1 [ REACTION ]
video_published_at character UTC datetime when the video was published on YouTube in ISO 8601 format 2024-03-10T13:00:06Z
video_privacy_status character Video privacy status as reported by the YouTube Data API; one of: public, unlisted, private public
series_name character Name of the GL series identified in this reaction video's title; one row per video/series combination 23.5

reaction_video_keywords.csv

This file contains reactor-assigned keywords (tags) for the videos in reaction_video_info.csv. This information was retrieved via the YouTube API.

Each row represents one keyword for one video. The file contains information for 47,366 video/keyword combinations.

variable type description example
video_id character YouTube video ID: an 11-character string uniquely identifying the video T_pkVAuGJUE
video_keyword character One producer-assigned keyword (tag) for the video; one row per video/keyword combination Thai GL

reaction_video_subtitles.csv

This file contains reactor-provided subtitle languages for the videos in reaction_video_info.csv. This information was retrieved via the YouTube API.

Each row represents one subtitle language for one video. The file contains information for 914 video/subtitle language combinations.

variable type description example
video_id character YouTube video ID: an 11-character string uniquely identifying the video X6P07oykHn4
language_code character BCP 47 language tag for the subtitle track as provided by the reactor es
language_name character Human-readable name of the subtitle language Spanish

reaction_video_types.csv

This file contains classification of the videos in reaction_video_info.csv` to specify the type of video (always “reaction” for these videos) and the series and series episode(s) (if any) with which they’re associated. This information was programmatically inferred from the video titles; it has not been manually reviewed and edited at the time of writing.

Each row represents one video. The file contains information for 3,881 videos.

variable type description example
video_id character YouTube video ID: an 11-character string uniquely identifying the video ovySaTQOPxA
video_type character Classification of the video; reaction for a reaction video reaction
video_episode integer Episode number of the series episode being reacted to (empty if unknown or not applicable) 2
video_total_episodes integer Total number of episodes in the season (empty for reaction videos)
video_part_num integer Part number when a reaction spans multiple videos (1 if not split) 2
video_total_parts integer Total number of parts for this reaction (1 if not split) 4
video_duration_seconds integer Video duration in seconds 2778
video_orientation character Aspect ratio orientation of the video; one of: landscape, portrait, square landscape
series_name character Name of the GL series being reacted to 23.5
season integer Season number of the series episode being reacted to (1 for single-season series) 2
referenced_video_id character Video ID of the series video this reaction refers to (empty if linked to an episode)

reactor_channels.csv

This file contains YouTube channel handles, IDs, and names for independent people creating reaction videos for Thai GL series.

Each row represents one channel. The file contains 39 channels.

variable type description example
channel character YouTube channel handle including the @ prefix @AlyssaDanielleYT
channel_id character YouTube channel ID: a 24-character string beginning with UC assigned by YouTube and stable across handle changes UC0Q6JMcvDfcdJ6mKxzHrRPQ
channel_name character Channel display name as shown on YouTube Alyssa Danielle

reactor_subscribers.csv

This file contains current and historical data on the number of subscribers to the YouTube channels listed in reactor_channels.csv. Current subscriber data was retrieved using the YouTube API. Historical subscriber data was retrieved by scraping channel web page snapshots on the Internet Archive.

Each row represents one channel at a particular date and time. The file contains subscriber information for 172 channel/date-time pairs.

variable type description example
channel character YouTube channel handle including the @ prefix @AlyssaDanielleYT
subscribers integer Subscriber count at the time of the snapshot 21000
datetime character Datetime of the snapshot; UTC ISO 8601 for current snapshots and local-time ISO 8601 for historical Wayback Machine snapshots 2022-12-24T04:08:49

series.csv

This file contains Thai GL series names, alternate names, and YouTube URLs. These are taken from the r/GirlsLove subreddit wiki,15 except for the information about the series Blank, which for some reason has been deleted from the wiki. (Its information was added separately.)

Each row represents one series. The file contains information for 76 series.

variable type description example
series_name character Primary series name as listed on the r/GirlsLove subreddit wiki 23.5
alternate_name character Alternative title used for matching (empty if none) 7 Project: Remember
youtube_url character YouTube URL for the series (playlist or individual video) https://youtube.com/playlist?list=PLY8VvVUr35kKIhBj_1y3fwQS6YMgc0bjt

series_comment_languages.csv

This file contains detected languages for individual comments on official series-related videos; languages were inferred using the Python fastText module.

Each row represents one comment and its detected language. The file contains information for 1,792,248 comments.

variable type description example
video_id character YouTube video ID of the video this comment was posted on tQPb1Nk8qRI
comment_id character YouTube comment ID assigned by YouTube UgwZt7YD-GapXj5k7TB4AaABAg
comment_language character ISO 639-1 language code detected by fastText for this comment th
comment_language_score double fastText confidence score for the detected language (0 to 1) 0.9996359944343567

series_commenter_info.csv

This file contains information on people commenting on official series-related videos. Each row represents one commenter and their associated information.

The file contains information for 347,008 commenters.

variable type description example
commenter_id character Anonymous commenter identifier in the format C followed by a randomly-generated 9-digit number; joins to an unreleased file containing comment author handles C844365880
commenter_comments integer Total number of comments and replies posted by this commenter across all series videos 233
commenter_top_level integer Number of top-level comments (not replies) posted by this commenter 231
commenter_replies integer Number of replies posted by this commenter 2
commenter_first_date character Date of the commenter's earliest comment in YYYY-MM-DD format 2023-01-08
commenter_last_date character Date of the commenter's most recent comment in YYYY-MM-DD format 2026-01-17
commenter_likes integer Total number of likes received across all of this commenter's comments 5002
commenter_replies_received integer Total number of replies received from other commenters on this commenter's top-level comments 42

series_commenter_languages.csv

This file contains detected languages for comment authors commenting on series-related videos. Languages were inferred using the Python fastText module as applied to comments by a given commenter.

In general the language determined for a commenter was the one for which their comments’ language had the highest confidence score as calculated by the fastText module. However, non-English languages were preferred to English if the non-English languages could be determined with a reasonably high degree of confidence (fastText language score of 0.9 or greater). This accounts for the case of commmenters whose native language is not English but who know English and sometimes use it when posting comments instead of their native language.

Each row represents one commenter and their detected language. The file contains information for 324,029 commenters.

variable type description example
commenter_id character Anonymous commenter identifier in the format C followed by a randomly-generated 9-digit number; joins to an unreleased file containing comment author handles C844365880
commenter_language character ISO 639-1 language code inferred as the commenter's native language based on their comment history th
commenter_language_score double fastText confidence score associated with the language assignment (0 to 1) 0.9995250105857849

series_thread_languages.csv

This file contains information on the number of distinct languages used within comment threads for official series-related videos; for more information on detected languages in series-related video comments see series_comment_languages.csv.

Each row represents one comment thread and its number of detected language(s). The file contains information for 1,518,214 comment threads.

variable type description example
thread_id character Comment ID of the top-level comment that started this thread UgyWTza-ODSHJ0QOMZZ4AaABAg
video_id character YouTube video ID of the video this thread is on Rjt-4cgSNTM
thread_comments integer Total number of comments in the thread (top-level comment plus all replies) 1
thread_commenters integer Number of unique commenters in the thread 1
thread_languages integer Number of distinct languages detected across comments in the thread 1
thread_cross_language_replies integer Number of replies whose detected language differs from the top-level comment's language 0
thread_languages_per_comment double Ratio of distinct languages to total comments in the thread 1.000000
thread_languages_per_commenter double Ratio of distinct languages to unique commenters in the thread 1.000000
thread_cross_language_per_reply double Ratio of cross-language replies to total replies in the thread (0 for threads with no replies) 0.000000

series_video_extras.csv

This file contains more information about the videos in series_video_info.csv, including likes, views, and number of comments. This information was retrieved using the YouTube API.

Each row represents one video. The file contains information for 3,867 videos.

variable type description example
video_id character YouTube video ID: an 11-character string uniquely identifying the video UHfgmfD64Zg
video_title character Video title as set by the producer on YouTube SUB] 1440 Minutes Part1
video_language character Default audio language of the video as reported by the YouTube Data API; BCP 47 language tag th
video_duration character Video duration in ISO 8601 duration format PT9M57S
video_view_count integer Total view count at the time of retrieval 1191764
video_like_count integer Total like count at the time of retrieval 11899
video_comment_count integer Total public comment count at the time of retrieval 156

series_video_info.csv

This file contains video IDs, titles, and other metadata for Thai live-action series and short series, along with official videos related to those series (e.g., trailers, music videos, etc.). This information was retrieved using the YouTube API.

Each row represents one video. The file contains information for 3,867 videos.

variable type description example
video_id character YouTube video ID: an 11-character string uniquely identifying the video UHfgmfD64Zg
playlist_id character YouTube playlist ID from which this video was retrieved PLhsCXKbbbsR07w5pvlQ7pN3OGFLJ_m8TS
video_title character Video title as set by the producer on YouTube SUB] 1440 Minutes Part1
video_published_at character UTC datetime when the video was published on YouTube in ISO 8601 format 2024-11-11T11:00:14Z
video_privacy_status character Video privacy status as reported by the YouTube Data API; one of: public, unlisted, private public

series_video_keywords.csv

This file contains producer-assigned keywords (tags) for the videos in series_video_info.csv. This information was retrieved via the YouTube API.

Each row represents one keyword for one video. The file contains information for 77,291 video/keyword combinations.

variable type description example
video_id character YouTube video ID: an 11-character string uniquely identifying the video 1ke8CPKV9v4
video_keyword character One producer-assigned keyword (tag) for the video; one row per video/keyword combination gl drama

series_video_subtitles.csv

This file contains producer-provided subtitle languages for the videos in series_video_info.csv. This information was retrieved via the YouTube API.

Each row represents one subtitle language for one video. The file contains information for 8,177 video/subtitle language combinations.

variable type description example
video_id character YouTube video ID: an 11-character string uniquely identifying the video QoI3f44_LuE
language_code character BCP 47 language tag for the subtitle track as provided by the producer es-419
language_name character Human-readable name of the subtitle language Spanish (Latin America)

series_video_types.csv

This file contains classification of the videos in series_video_info.csv to determine the type of video (e.g., “episode” or “trailer”) and the series episode(s) (if any) with which it’s associated. This information was programmatically inferred from the video titles and then manually reviewed and edited to correct errors in classification.

Each row represents one video. The file contains information for 3,867 videos.

variable type description example
video_id character YouTube video ID: an 11-character string uniquely identifying the video UHfgmfD64Zg
video_type character Classification of the video; one of: episode, compilation, reaction, clip, trailer, bts, music video, other episode
video_episode integer Episode number within the series or season (empty for non-episode types) 2
video_total_episodes integer Total number of episodes in the season (empty if unknown or not applicable) 6
video_part_num integer Part number when an episode is split across multiple videos (1 if not split) 3
video_total_parts integer Total number of parts for this episode (1 if not split) 4
video_duration_seconds integer Video duration in seconds 597
video_orientation character Aspect ratio orientation of the video; one of: landscape, portrait, square landscape
series_name character Name of the GL series this video belongs to 1440 Minutes
season integer Season number (1 for single-season series) 2
referenced_video_id character Video ID of the episode that secondary content (highlight/reaction/etc.) refers to (empty for episodes)

short_series.csv

This file contains similar data to series.csv except for short series (total runtime less than 120 minutes). These are also taken from the r/GirlsLove subreddit wiki.16

Each row represents one short series. The file contains information for 81 short series.

variable type description example
series_name character Primary short series name as listed on the r/GirlsLove subreddit wiki 1440 Minutes
alternate_name character Alternative title used for matching (empty if none) 21 days Closer Step
youtube_url character YouTube URL for the series (playlist or individual video) https://www.youtube.com/playlist?list=PLhsCXKbbbsR07w5pvlQ7pN3OGFLJ_m8TS

blank_1_1_snapshot_metrics.csv, gap_1_1_snapshot_metrics.csv, tlp_1_1_snapshot_metrics.csv

These files contain historical snapshots of metrics for the first videos (episode 1, part 1) of the series Blank, Gap, and The Loyal Pin respectively.

Each row represents one snapshot of video metrics for a given date and time. The file blank_1_1_snapshot_metrics.csv contains 65 rows. The file gap_1_1_snapshot_metrics.csv contains 67 rows. The file tlp_1_1_snapshot_metrics.csv contains 58 rows.

variable type description example
video_id character YouTube video ID of the video for which snapshots were collected iZ0uHlR7muw
video_snapshot_time character Local datetime of the Wayback Machine snapshot in ISO 8601 format (no timezone suffix) 2024-03-30T13:33:07
video_view_count integer View count extracted from the Wayback Machine snapshot of the video page 1567540
video_like_count integer Like count extracted from the Wayback Machine snapshot of the video page 46000
video_comment_count integer Comment count extracted from the Wayback Machine snapshot of the video page 1200

Environment

I used the following R environment in doing the analysis above:

## R version 4.6.0 (2026-04-24)
## Platform: aarch64-apple-darwin24.6.0
## Running under: macOS Sequoia 15.7.4
## 
## Matrix products: default
## BLAS:   /opt/homebrew/Cellar/openblas/0.3.33/lib/libopenblasp-r0.3.33.dylib 
## LAPACK: /opt/homebrew/Cellar/r/4.6.0/lib/R/lib/libRlapack.dylib;  LAPACK version 3.12.1
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## time zone: America/New_York
## tzcode source: internal
## 
## attached base packages:
## [1] tools     stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] ISOcodes_2026.03.28 gt_1.3.0            lubridate_1.9.5    
##  [4] forcats_1.0.1       stringr_1.6.0       dplyr_1.2.1        
##  [7] purrr_1.2.2         readr_2.2.0         tidyr_1.3.2        
## [10] tibble_3.3.1        ggplot2_4.0.3       tidyverse_2.0.0    
## 
## loaded via a namespace (and not attached):
##  [1] sass_0.4.10        generics_0.1.4     xml2_1.5.2         stringi_1.8.7     
##  [5] hms_1.1.4          digest_0.6.39      magrittr_2.0.5     evaluate_1.0.5    
##  [9] grid_4.6.0         timechange_0.4.0   RColorBrewer_1.1-3 fastmap_1.2.0     
## [13] jsonlite_2.0.0     scales_1.4.0       jquerylib_0.1.4    cli_3.6.6         
## [17] rlang_1.2.0        crayon_1.5.3       bit64_4.8.0        withr_3.0.2       
## [21] cachem_1.1.0       yaml_2.3.12        parallel_4.6.0     tzdb_0.5.0        
## [25] vctrs_0.7.3        R6_2.6.1           lifecycle_1.0.5    fs_2.1.0          
## [29] bit_4.6.0          vroom_1.7.1        pkgconfig_2.0.3    pillar_1.11.1     
## [33] bslib_0.10.0       gtable_0.3.6       glue_1.8.1         xfun_0.57         
## [37] tidyselect_1.2.1   rstudioapi_0.18.0  knitr_1.51         farver_2.1.2      
## [41] htmltools_0.5.9    rmarkdown_2.31     labeling_0.4.3     compiler_4.6.0    
## [45] S7_0.2.2

Source code and data

The source code and data for this analysis can be found in the public code repository https://codeberg.org/frankhecker/yt-gl-fandom.

This document and its source code are available for unrestricted use, distribution and modification under the terms of the Creative Commons CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.17 Stated more simply, you’re free to do whatever you’d like with it.


  1. “GL” (from “girls’ love”) and “Yuri” (from the Japanese word for “lily”) are roughly interchangeable terms referring to works (typically produced in East or Southeast Asia) depicting romantic relationships between women. “Yuri” is a creator and fan-coined term typically used in relation to Japanese media (manga, anime, light novels, visual novels, etc.). “GL” (coined as a parallel term to “BL” or “boys’ love”) is more commonly used in commercial contexts and in connection with works created outside Japan. For the history of the term “Yuri” see Erica Friedman, “Why We Call It ‘Yuri,’” Anime Feminist, August 9, 2017, https://www.animefeminist.com/history-why-call-yuri/.↩︎

  2. Jessica Lau, “14 YouTube metrics you should focus on in 2026,” Zapier website, December 19, 2025, https://zapier.com/blog/youtube-metrics/.↩︎

  3. R Foundation, The R Project for Statistical Computing, https://www.r-project.org/.↩︎

  4. Posit Software, Tidyverse, https://www.tidyverse.org/.↩︎

  5. R. Iannone, J. Cheng, B. Schloerke, S. Haughton, E. Hughes, A. Lauer, R. François, J. Seo, K. Brevoort, and O. Roy, gt: Easily Create Presentation-Ready Display Tables, R package version 1.3.0.9000, https://gt.rstudio.com.↩︎

  6. Christian Buchta and Kurt Hornik, ISOcodes: Selected ISO Codes, https://cran.r-project.org/web/packages/ISOcodes/index.html.↩︎

  7. R Core Team, Tools for Package Development, https://cran.r-project.org/doc/manuals/r-release/packages/tools/refman/tools.html.↩︎

  8. Google, YouTube > Data API, https://developers.google.com/youtube/v3/docs/.↩︎

  9. BuzzVoice, “What Counts as a View on YouTube? Simple Guide,” https://buzzvoice.com/blog/what-counts-as-a-view-on-youtube/, accessed April 18, 2026.↩︎

  10. Lau, “14 YouTube metrics.”↩︎

  11. Thomas Baudinette, Boys Love Media in Thailand: Celebrity, Fans, and Transnational Asian Queer Popular Culture (Bloomsbury Academic, London, 2004), 44–5.↩︎

  12. Megan Sinnott, “The Romance of the Queer: The Sexual and Gender Norms of Tom and Dee in Thailand,” in AsiaPacifiQueer: Rethinking Genders and Sexualities (University of Illinois Press, Urbana and Chicago, 2008), 131–48.↩︎

  13. Facebook, fastText: Library for efficient text classification and representation learning, https://fasttext.cc/.↩︎

  14. Simon Ging, fasttext-numpy2 0.10.4, https://pypi.org/project/fasttext-numpy2/↩︎

  15. r/GirlsLove > Wiki > glseries, Reddit, https://www.reddit.com/r/GirlsLove/wiki/index/glseries/.↩︎

  16. r/GirlsLove > Wiki > shortseries, Reddit, https://www.reddit.com/r/GirlsLove/wiki/index/shortseries/.↩︎

  17. Creative Commons, CC0 1.0 Universal Deed, https://creativecommons.org/publicdomain/zero/1.0/.↩︎