As of October 2, 2025, I notice that this page no longer renders regional indicator emoji in the same way (at least on Ubuntu using Firefox) - if I put two unrecognized RIE together, they form an unrecognized flag. This sadly defeats the original point of the page, but it's left here for historical purposes.
Regional indicator emoji (RIE) are special letter emoji that combine to render a flag when placed next to each other in certain pairs. For instance, if you place 🇳 and 🇴 together on a webpage, you get 🇳🇴: The flag of Norway. I’m doing that now in this HTML file - check the source! There are a large number of these letter pairs: 249 official two-letter country codes and 9 “exceptional” codes (UN or 🇺🇳 renders the flag of the United Nations, for example)1. Here are the 258 two-letter country codes that will render a flag:
listofCountryCodes
## [1] "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX"
## [16] "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ"
## [31] "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK"
## [46] "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM"
## [61] "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR"
## [76] "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS"
## [91] "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN"
## [106] "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN"
## [121] "KP" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV"
## [136] "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ"
## [151] "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI"
## [166] "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM"
## [181] "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC"
## [196] "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV"
## [211] "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR"
## [226] "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI"
## [241] "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" "AC" "CP" "DG" "TA" "EA" "IC"
## [256] "XK" "EU" "UN"
Since you can get individual regional indicator letters as separate emoji, the question is: What is the longest English word you can spell with them without having a pair of them turn into some sort of flag?
The best answer I could find is 🇪🇶🇺🇮 🇵🇴 🇱🇱🇪🇳🇹 (equipollent), at 11 letters. If you want a word that’s in more common use, 🇹🇪🇱🇪🇵🇴🇷🇹🇪🇩 (teleported) and 🇰🇴🇴🇰🇦🇧🇺🇷🇷🇦 (kookaburra) are two excellent candidates at 10 letters.
There were two parts to reaching this answer.
First, I defined a function which checked every letter pair in a given input word and returned TRUE if none of the word’s letter pairs were in the list of country codes.
checkInputWord = function(wordEnter){
truthCounter <- 0
word <- toupper(wordEnter)
for(i in (1:(nchar(word) - 1)))(
if(str_sub(word, i, i + 1) %in% listofCountryCodes) {
truthCounter <- truthCounter + 1
}
)
return(dplyr::if_else(truthCounter > 0, FALSE, TRUE, missing = FALSE))
}
checkInputWord("PUP") #Returns true
## [1] TRUE
checkInputWord("PUPPY") #Returns false for "PY" - Portugal
## [1] FALSE
Second, I got a list of about 370,000 “English” words2 and ran them all through this function. Many of the words are not English but are recognizable loanwords. Some are dubious, like the other 11-letter candidate GOSPODIPODA which does not seem to be a real word in use. But there’s enough I recognize to satisfy me.
words_alpha <- readLines("words_alpha.txt") #lots of words! from https://github.com/dwyl/english-words?tab=readme-ov-file
wordVector <- c()
for(i in 1:length(words_alpha))(
if(checkInputWord(words_alpha[i]))(
wordVector <- c(wordVector, words_alpha[i])
)
)
#Once that's done - extract maximum word
wordVector[nchar(wordVector)==max(nchar(wordVector))]
## [1] "equipollent" "gospodipoda"
#And then here's the 10 letter candidates.
wordVector[nchar(wordVector)==max(nchar(wordVector)) - 1]
## [1] "anteflexed" "antelopian" "antifelony" "buddhahood" "equipotent"
## [6] "hemizygote" "hypopoddia" "kookaburra" "kotukutuku" "oxybutyria"
## [11] "rhizopodan" "rhizopogon" "spoondrift" "sulfhydryl" "sulfurized"
## [16] "teleported" "workfellow"
#Here's the 9 letter candidates for good measure.
wordVector[nchar(wordVector)==max(nchar(wordVector)) - 2]
## [1] "anhydrize" "antifelon" "antiworld" "buhlworks" "bullhorns" "bullpouts"
## [7] "cellepora" "dandriffy" "dandriffs" "diandrian" "dryopians" "eponymize"
## [13] "equivoque" "excelente" "excellent" "felonwood" "felonwort" "floodways"
## [19] "floodwood" "fullwords" "furfurans" "gonyocele" "gourdworm" "handholds"
## [25] "handiwork" "handworks" "hemipodan" "hemipodii" "hexahedra" "hexandria"
## [31] "hexapodan" "hypohemia" "hypopodia" "hypoxemia" "hypoxylon" "holohedry"
## [37] "hondurans" "hondurian" "hornworts" "hotelhood" "ivorywood" "kurmburra"
## [43] "loanwords" "oddfellow" "offendant" "okupukupu" "outpolled" "outpulled"
## [49] "outquoted" "polemized" "potentize" "potpourri" "purported" "purpurize"
## [55] "quixotize" "rantepole" "rantipole" "rhizopoda" "rhizopods" "spoolwood"
## [61] "spoonsful" "spoonways" "spoonwood" "spoonwort" "subpotent" "sudburian"
## [67] "sulfurize" "supported" "suppurant" "surquedry" "teleozoon" "teleports"
## [73] "turbulent" "wayfellow" "woodworks" "worrywort" "zelotypia" "zulhijjah"
[1] UTS #51: Unicode Emoji Annex B: Valid Emoji Flag Sequences. Unicode Consortium web. Retrieved August 9, 2025, from https://unicode.org/reports/tr51/#Flags
[2] This list can be found at https://github.com/dwyl/english-words?tab=readme-ov-file.