Letters that bob up and down, or tildes, zigzags and swells over and under your words, copied as text.
Wavy Text Generator
Sample. Type or paste your own to replace it.
Wavy: raised, then lowered14 characters
ˢₘᵒₒᵗₕ ˢₐⁱₗⁱₙᵍ
Same text, other wave looks
Tilde on every letter27 characterss̃m̃õõt̃h̃ s̃ãĩl̃ĩñg̃U+0303 Combining tilde after every letter. On n, a and o it is the same mark that makes ñ, ã and õ, and a form that tidies text may fuse the pair into that one letter.
Tilde on every other letter21 characterss̃mõot̃h s̃aĩlĩng̃U+0303 Combining tilde on the first, third, fifth letter and so on. Spaces are not counted, so the rhythm carries across words.
Rolling tilde over each word25 characterss͠m͠o͠o͠t͠h s͠a͠i͠l͠i͠n͠gU+0360 Combining double tilde between the letters of each word. One mark spans two letters, so neighbours overlap into a single rolling line that stops at the end of the word.
Two tildes stacked40 characterss̃̃m̃̃õ̃õ̃t̃̃h̃̃ s̃̃ã̃ĩ̃l̃̃ĩ̃ñ̃g̃̃U+0303 Combining tilde twice on every letter. How far apart the two sit is up to the font.
Double ripple above27 characterss͌m͌o͌o͌t͌h͌ s͌a͌i͌l͌i͌n͌g͌U+034C Combining almost equal to above on every letter: two small tildes, one over the other, drawn as a single mark. The names list gives its use in the IPA as velopharyngeal friction.
Ripple with a dot27 characterss͋m͋o͋o͋t͋h͋ s͋a͋i͋l͋i͋n͋g͋U+034B Combining homothetic above on every letter, a tilde with a dot on each side of it. Both this mark and the double ripple arrived in Unicode 3.0 (September 1999).
Zigzag above27 characterss͛m͛o͛o͛t͛h͛ s͛a͛i͛l͛i͛n͛g͛U+035B Combining zigzag above on every letter, a sharp wave. The names list gives its uses as Latin abbreviation, Lithuanian phonetics and medievalist transcriptions.
Upright tildes27 characterss̾m̾o̾o̾t̾h̾ s̾a̾i̾l̾i̾n̾g̾U+033E Combining vertical tilde on every letter: a tilde stood on end, like rising steam. The names list gives it the second name yerik, a Cyrillic sign.
Tilde under every other letter21 characterss̰mo̰ot̰h s̰aḭlḭng̰U+0330 Combining tilde below under the first, third, fifth letter and so on. Under every letter it is the wavy underline, which has its own page.
Wiggly line below27 characterss᪶m᪶o᪶o᪶t᪶h᪶ s᪶a᪶i᪶l᪶i᪶n᪶g᪶U+1AB6 Combining wiggly line below under every letter, from a run of marks the names list heads Used in German dialectology. It arrived in Unicode 7.0 (June 2014), so an older device may show a box.
Zigzag below27 characterss᷏m᷏o᷏o᷏t᷏h᷏ s᷏a᷏i᷏l᷏i᷏n᷏g᷏U+1DCF Combining zigzag below under every letter, one of the Medievalist additions of Unicode 5.1 (April 2008).
Snake below27 characterss᷂m᷂o᷂o᷂t᷂h᷂ s᷂a᷂i᷂l᷂i᷂n᷂g᷂U+1DC2 Combining snake below under every letter, a longer and flatter curve than the tilde. It arrived in Unicode 4.1 (March 2005).
Seagulls below27 characterss̼m̼o̼o̼t̼h̼ s̼a̼i̼l̼i̼n̼g̼U+033C Combining seagull below under every letter: two shallow arcs, the way a child draws a bird or a wave crest. In the IPA it marks a linguolabial sound.
Double ripple below27 characterss᷽m᷽o᷽o᷽t᷽h᷽ s᷽a᷽i᷽l᷽i᷽n᷽g᷽U+1DFD Combining almost equal to below under every letter. The names list says it marks a strident vowel in Khoisan languages. It arrived in Unicode 5.2 (October 2009).
Tilde above and below40 characterss̰̃m̰̃õ̰õ̰t̰̃h̰̃ s̰̃ã̰ḭ̃l̰̃ḭ̃ñ̰g̰̃U+0303 Combining tilde and U+0330 Combining tilde below on every letter, so the word runs between two wavy lines.
Tilde through every other letter21 characterss̴mo̴ot̴h s̴ai̴li̴ng̴U+0334 Combining tilde overlay through the first, third, fifth letter and so on, which keeps the word easier to read than a tilde through every letter.
Three tildes53 characterss̴̰̃m̴̰̃õ̴̰õ̴̰t̴̰̃h̴̰̃ s̴̰̃ã̴̰ḭ̴̃l̴̰̃ḭ̴̃ñ̴̰g̴̰̃U+0334 Combining tilde overlay, U+0303 Combining tilde and U+0330 Combining tilde below on every letter: a wave over, through and under. Three marks a letter, so every letter counts as four characters where a form counts them.
Zigzag above and below40 characterss᷏͛m᷏͛o᷏͛o᷏͛t᷏͛h᷏͛ s᷏͛a᷏͛i᷏͛l᷏͛i᷏͛n᷏͛g᷏͛U+035B Combining zigzag above and U+1DCF Combining zigzag below on every letter.
Tilde on first and last letters22 characterss̰̃mooth̰̃ s̰̃ailing̰̃U+0303 Combining tilde and U+0330 Combining tilde below on the first and last letter of each word only. The middle of the word stays clean.
Swell above42 characterss͌̃̃͌m͌̃̃õot̃h͌̃͌ s͌̃̃͌a͌̃͌ĩli͌ñ͌͌g̃͌͌̃A pile of U+0303 Combining tilde and U+034C Combining almost equal to above that rises and falls once every six letters: 4 marks, 3, 1, none, 1, 3. Which of the two marks lands where is drawn afresh on each shuffle.
Swell below42 characterss᷽̰᷽̰m᷽̰᷽o̰ot̰h̰᷽̰ s᷽̰̰᷽a̰᷽̰ḭlḭn᷽̰̰g᷽̰᷽̰The same six-letter swell hung under the line, from U+0330 Combining tilde below and U+1DFD Combining almost equal to below.
Swell on both sides56 characterss᷽̰᷽͌̃͌m̰᷽̃͌õ᷽ot̰̃h̰᷽͌̃ s̰᷽̰̃͌͌ã᷽̰͌ḭ̃lḭ̃n̰᷽͌̃g̰᷽̰̃͌̃The swell above and the swell below at once, so the line bulges and narrows every six letters. Up to 6 marks a letter.
Rising tide47 characterssmo͌õt͌̃h͌̃ s̃͌̃ã͌̃i͌̃͌l͌̃͌̃ĩ͌̃͌ñ͌̃͌͌g͌̃̃͌͌Nothing on the first letter and 5 marks on the last, from U+0303 Combining tilde and U+034C Combining almost equal to above. The pile grows evenly along the whole text.
Ebbing tide47 characterss̃͌̃͌͌m̃͌̃͌̃õ͌̃͌õ͌̃͌t͌̃͌h̃͌̃ s͌̃̃ã͌i͌̃l͌i͌ngThe rising tide turned round: 5 marks on the first letter and nothing on the last.
Choppy water27 characterss̑m̑ȏŏt̆h̆ s̆ăĭl̑ȋn̑ğOne mark on every letter, either U+0306 Combining breve, a cup, or U+0311 Combining inverted breve, a cap. Cups and caps in a row read as small waves, and each shuffle deals them again.
Choppy water below27 characterss̮m̮o̮o̮t̯h̯ s̯a̯i̯l̯i̮n̯g̮One mark under every letter, either U+032E Combining breve below or U+032F Combining inverted breve below.
Wrapped: waves22 characters〜〜〜 smooth sailing 〜〜〜
More options
Use these for fun, not for anything that matters. Screen readers read many of these characters badly or skip them, search cannot find them, and some apps strip them or show empty boxes.
This wavy text generator raises and lowers your letters in turn, or lays one of 26 tilde, zigzag and swell looks over them. Some apps strip or block these characters, and screen readers may read them badly.
Read the full guide
Your words, bobbing up and down
The large card shows Wavy: raised, then lowered, ˢₘᵒₒᵗₕ ˢₐⁱₗⁱₙᵍ for the sample. Below are 26 wave looks, from Tilde on every letter to Ebbing tide. Nineteen are fixed; the 7 swells and tides change with Shuffle the waves.
Which letters stay on the line
Unicode has no lowered b, c, d, f, g or q, so each of those stays on the line when its turn is a low one. Lowered w, y and z arrived only with Unicode 18.0 in September 2026, so they stay off until you switch on Use the newest letters, and older fonts show them as empty boxes.
Tips
Tilde on every letter builds ñ, ã and õ from n, a and o, and an app that tidies text may fuse each pair.
Every mark counts as a character: smooth sailing is 14 as typed, 27 under Tilde on every letter and 53 under Three tildes.
Wiggly line below uses the newest mark here, from Unicode 7.0 (June 2014), so an older device may show boxes.
Questions and answers
Can this wave text generator draw a wavy underline?
Only in pieces: Wiggly line below and Snake below put a short curve under each letter. For U+0330 Combining tilde below under every letter, the closest thing to one wavy line, use Wavy underline on the underline text page.
How does wavy text work without a font?
Two ways. The large card swaps each letter for a raised or lowered Unicode letter in turn. The 26 looks keep your letters and follow each with a combining mark such as U+0303 Combining tilde, drawn over the letter before it.
What is the difference between wavy text and zalgo text?
Count and order. Zalgo piles many marks on at random. Here 19 looks place one to three chosen marks in a fixed pattern, and the 7 swells and tides stack at most 6 marks a letter, so the words stay readable.
a͌b͌c͌Double ripple aboveU+034C Combining almost equal to above on every letter: two small tildes, one over the other, drawn as a single mark. The names list gives its use in the IPA as velopharyngeal friction.
a͋b͋c͋Ripple with a dotU+034B Combining homothetic above on every letter, a tilde with a dot on each side of it. Both this mark and the double ripple arrived in Unicode 3.0 (September 1999).
a͠b͠cRolling tilde over each wordU+0360 Combining double tilde between the letters of each word. One mark spans two letters, so neighbours overlap into a single rolling line that stops at the end of the word.
Show all 26 wave looks (23 more)
Waves above, continued
ãb̃c̃Tilde on every letterU+0303 Combining tilde after every letter. On n, a and o it is the same mark that makes ñ, ã and õ, and a form that tidies text may fuse the pair into that one letter.
ãbc̃Tilde on every other letterU+0303 Combining tilde on the first, third, fifth letter and so on. Spaces are not counted, so the rhythm carries across words.
ã̃b̃̃c̃̃Two tildes stackedU+0303 Combining tilde twice on every letter. How far apart the two sit is up to the font.
a̾b̾c̾Upright tildesU+033E Combining vertical tilde on every letter: a tilde stood on end, like rising steam. The names list gives it the second name yerik, a Cyrillic sign.
a͛b͛c͛Zigzag aboveU+035B Combining zigzag above on every letter, a sharp wave. The names list gives its uses as Latin abbreviation, Lithuanian phonetics and medievalist transcriptions.
Waves below 6
a᷽b᷽c᷽Double ripple belowU+1DFD Combining almost equal to below under every letter. The names list says it marks a strident vowel in Khoisan languages. It arrived in Unicode 5.2 (October 2009).
a̼b̼c̼Seagulls belowU+033C Combining seagull below under every letter: two shallow arcs, the way a child draws a bird or a wave crest. In the IPA it marks a linguolabial sound.
a᷂b᷂c᷂Snake belowU+1DC2 Combining snake below under every letter, a longer and flatter curve than the tilde. It arrived in Unicode 4.1 (March 2005).
a̰bc̰Tilde under every other letterU+0330 Combining tilde below under the first, third, fifth letter and so on. Under every letter it is the wavy underline, which has its own page.
a᪶b᪶c᪶Wiggly line belowU+1AB6 Combining wiggly line below under every letter, from a run of marks the names list heads Used in German dialectology. It arrived in Unicode 7.0 (June 2014), so an older device may show a box.
a᷏b᷏c᷏Zigzag belowU+1DCF Combining zigzag below under every letter, one of the Medievalist additions of Unicode 5.1 (April 2008).
Above, below and through 5
ã̴̰b̴̰̃c̴̰̃Three tildesU+0334 Combining tilde overlay, U+0303 Combining tilde and U+0330 Combining tilde below on every letter: a wave over, through and under. Three marks a letter, so every letter counts as four characters where a form counts them.
ã̰b̰̃c̰̃Tilde above and belowU+0303 Combining tilde and U+0330 Combining tilde below on every letter, so the word runs between two wavy lines.
ã̰bc̰̃Tilde on first and last lettersU+0303 Combining tilde and U+0330 Combining tilde below on the first and last letter of each word only. The middle of the word stays clean.
a̴bc̴Tilde through every other letterU+0334 Combining tilde overlay through the first, third, fifth letter and so on, which keeps the word easier to read than a tilde through every letter.
a᷏͛b᷏͛c᷏͛Zigzag above and belowU+035B Combining zigzag above and U+1DCF Combining zigzag below on every letter.
Swells and tides 7
ȃb̑c̆Choppy waterOne mark on every letter, either U+0306 Combining breve, a cup, or U+0311 Combining inverted breve, a cap. Cups and caps in a row read as small waves, and each shuffle deals them again.
a̯b̮c̯Choppy water belowOne mark under every letter, either U+032E Combining breve below or U+032F Combining inverted breve below.
ã͌̃͌͌b̃͌̃cEbbing tideThe rising tide turned round: 5 marks on the first letter and nothing on the last.
ab͌̃͌c̃͌̃͌͌Rising tideNothing on the first letter and 5 marks on the last, from U+0303 Combining tilde and U+034C Combining almost equal to above. The pile grows evenly along the whole text.
a͌̃͌̃b͌̃̃c̃Swell aboveA pile of U+0303 Combining tilde and U+034C Combining almost equal to above that rises and falls once every six letters: 4 marks, 3, 1, none, 1, 3. Which of the two marks lands where is drawn afresh on each shuffle.
a̰᷽᷽̰b᷽̰̰c̰Swell belowThe same six-letter swell hung under the line, from U+0330 Combining tilde below and U+1DFD Combining almost equal to below.
a̰᷽᷽͌̃̃b᷽̰̃͌c᷽̃Swell on both sidesThe swell above and the swell below at once, so the line bulges and narrows every six letters. Up to 6 marks a letter.
How this list was compiled: We wrote these 26 recipes and their names ourselves. Each one says which combining marks follow which letters of your text: every letter, every other letter, the first and last letter of a word, between the letters of a word, or a pile whose height rises and falls along the line. 19 recipes are fixed, so the same text always gives the same result, and 7 draw their marks afresh on each shuffle. Spaces never get a mark. The build script compares the recipes with the 378 rows of the other recipe pages of this site (caesar-cipher-wheel-printable, coquette-text-generator, cursed-text-generator, emo-text-generator, font-generator, heart-text-generator, kawaii-text-generator, overline-text-generator, preppy-text-generator, redacted-text-generator, star-text-generator, strikethrough-text-generator, stylish-text-generator, underline-text-generator) and stops if a name or a whole recipe repeats one of theirs. The 17 marks used are U+0303 Combining tilde, U+0306 Combining breve, U+0311 Combining inverted breve, U+032E Combining breve below, U+032F Combining inverted breve below, U+0330 Combining tilde below, U+0334 Combining tilde overlay, U+033C Combining seagull below, U+033E Combining vertical tilde, U+034B Combining homothetic above, U+034C Combining almost equal to above, U+035B Combining zigzag above, U+0360 Combining double tilde, U+1AB6 Combining wiggly line below, U+1DC2 Combining snake below, U+1DCF Combining zigzag below and U+1DFD Combining almost equal to below. Every mark is written into the script as a code point with the name it should have, and the script stops unless https://www.unicode.org/Public/18.0.0/ucd/UnicodeData.txt (Unicode 18.0.0) gives exactly that name, the category Mn and the combining class the row relies on (230 above, 220 below, 1 overlay, 234 double above). Ages come from https://www.unicode.org/Public/18.0.0/ucd/DerivedAge.txt, the notes on what each mark is for and the subheads from https://www.unicode.org/Public/18.0.0/ucd/NamesList.txt, and release months from https://www.unicode.org/history/publicationdates.html. All checked on 2026-09-20. The sample in each row was rendered by the widget's own code (web/engine/widgets/textstyle/looks.js); for a shuffled recipe it is one draw from a seeded generator. Licence: own work (facts from the Unicode Character Database, Unicode License v3, restated in our own words)
The 104 characters the extra styles use
Raised 64
0 becomes ⁰U+2070 Superscript zero
1 becomes ¹U+00B9 Superscript one
2 becomes ²U+00B2 Superscript two
3 becomes ³U+00B3 Superscript three
4 becomes ⁴U+2074 Superscript four
5 becomes ⁵U+2075 Superscript five
6 becomes ⁶U+2076 Superscript six
7 becomes ⁷U+2077 Superscript seven
8 becomes ⁸U+2078 Superscript eight
9 becomes ⁹U+2079 Superscript nine
A becomes ᴬU+1D2C Modifier letter capital a
a becomes ᵃU+1D43 Modifier letter small a
Show all 104 characters (92 more)
Raised, continued
B becomes ᴮU+1D2E Modifier letter capital b
b becomes ᵇU+1D47 Modifier letter small b
+ becomes ⁺U+207A Superscript plus sign
- becomes ⁻U+207B Superscript minus
= becomes ⁼U+207C Superscript equals sign
( becomes ⁽U+207D Superscript left parenthesis
) becomes ⁾U+207E Superscript right parenthesis
c becomes ᶜU+1D9C Modifier letter small c
C becomes ꟲU+A7F2 Modifier letter capital c. One of the newest letters, so few fonts draw it yet
D becomes ᴰU+1D30 Modifier letter capital d
d becomes ᵈU+1D48 Modifier letter small d
E becomes ᴱU+1D31 Modifier letter capital e
e becomes ᵉU+1D49 Modifier letter small e
f becomes ᶠU+1DA0 Modifier letter small f
F becomes ꟳU+A7F3 Modifier letter capital f. One of the newest letters, so few fonts draw it yet
G becomes ᴳU+1D33 Modifier letter capital g
g becomes ᵍU+1D4D Modifier letter small g
h becomes ʰU+02B0 Modifier letter small h
H becomes ᴴU+1D34 Modifier letter capital h
I becomes ᴵU+1D35 Modifier letter capital i
i becomes ⁱU+2071 Superscript latin small letter i
j becomes ʲU+02B2 Modifier letter small j
J becomes ᴶU+1D36 Modifier letter capital j
K becomes ᴷU+1D37 Modifier letter capital k
k becomes ᵏU+1D4F Modifier letter small k
l becomes ˡU+02E1 Modifier letter small l
L becomes ᴸU+1D38 Modifier letter capital l
M becomes ᴹU+1D39 Modifier letter capital m
m becomes ᵐU+1D50 Modifier letter small m
N becomes ᴺU+1D3A Modifier letter capital n
n becomes ⁿU+207F Superscript latin small letter n
O becomes ᴼU+1D3C Modifier letter capital o
o becomes ᵒU+1D52 Modifier letter small o
P becomes ᴾU+1D3E Modifier letter capital p
p becomes ᵖU+1D56 Modifier letter small p
Q becomes ꟴU+A7F4 Modifier letter capital q. One of the newest letters, so few fonts draw it yet
q becomes 𐞥U+107A5 Modifier letter small q. One of the newest letters, so few fonts draw it yet
r becomes ʳU+02B3 Modifier letter small r
R becomes ᴿU+1D3F Modifier letter capital r
s becomes ˢU+02E2 Modifier letter small s
S becomes U+A7F1 Modifier letter capital s. One of the newest letters, so few fonts draw it yet
T becomes ᵀU+1D40 Modifier letter capital t
t becomes ᵗU+1D57 Modifier letter small t
U becomes ᵁU+1D41 Modifier letter capital u
u becomes ᵘU+1D58 Modifier letter small u
v becomes ᵛU+1D5B Modifier letter small v
V becomes ⱽU+2C7D Modifier letter capital v
w becomes ʷU+02B7 Modifier letter small w
W becomes ᵂU+1D42 Modifier letter capital w
x becomes ˣU+02E3 Modifier letter small x
y becomes ʸU+02B8 Modifier letter small y
z becomes ᶻU+1DBB Modifier letter small z
Lowered 35
0 becomes ₀U+2080 Subscript zero
1 becomes ₁U+2081 Subscript one
2 becomes ₂U+2082 Subscript two
3 becomes ₃U+2083 Subscript three
4 becomes ₄U+2084 Subscript four
5 becomes ₅U+2085 Subscript five
6 becomes ₆U+2086 Subscript six
7 becomes ₇U+2087 Subscript seven
8 becomes ₈U+2088 Subscript eight
9 becomes ₉U+2089 Subscript nine
a becomes ₐU+2090 Latin subscript small letter a
+ becomes ₊U+208A Subscript plus sign
- becomes ₋U+208B Subscript minus
= becomes ₌U+208C Subscript equals sign
( becomes ₍U+208D Subscript left parenthesis
) becomes ₎U+208E Subscript right parenthesis
e becomes ₑU+2091 Latin subscript small letter e
h becomes ₕU+2095 Latin subscript small letter h
i becomes ᵢU+1D62 Latin subscript small letter i
j becomes ⱼU+2C7C Latin subscript small letter j
k becomes ₖU+2096 Latin subscript small letter k
l becomes ₗU+2097 Latin subscript small letter l
m becomes ₘU+2098 Latin subscript small letter m
n becomes ₙU+2099 Latin subscript small letter n
o becomes ₒU+2092 Latin subscript small letter o
p becomes ₚU+209A Latin subscript small letter p
r becomes ᵣU+1D63 Latin subscript small letter r
s becomes ₛU+209B Latin subscript small letter s
t becomes ₜU+209C Latin subscript small letter t
u becomes ᵤU+1D64 Latin subscript small letter u
v becomes ᵥU+1D65 Latin subscript small letter v
w becomes U+209D Latin subscript small letter w. One of the newest letters, so few fonts draw it yet
x becomes ₓU+2093 Latin subscript small letter x
y becomes U+209E Latin subscript small letter y. One of the newest letters, so few fonts draw it yet
z becomes U+209F Latin subscript small letter z. One of the newest letters, so few fonts draw it yet
Wave 5
~U+007E Tilde
≋U+224B Triple tilde
〜U+301C Wave dash
﹏U+FE4F Wavy low line
~U+FF5E Fullwidth tilde
How this list was compiled: Each character was typed by hand from the Unicode code charts and checked against UnicodeData.txt of Unicode 18.0.0, which is also where the names are from. A pair marked as a near miss was judged by eye, because Unicode's own list of confusable characters does not hold it. Licence: Unicode data files are used under the Unicode License v3 (https://www.unicode.org/license.txt).