El esperanto se escribe con una variante del alfabeto latino en 28 letras, mayúsculas y minúsculas. Además están las marcas de puntuación y varios logogramas tales como los numerales 0-9, signos de divisa como $, y símbolos matemáticos.
Cuando Zamenhof creó el esperanto, él utilizó como base el alfabeto latino, pero quitando las letras Q, X e Y (La W fue usada en el Proto-Esperanto). Aunque él conocía también los alfabetos cirílico, griego y hebreo, prefirió el latino porque es el más conocido de nuestro tiempo, ya que se ocupa en la mayor parte de Europa, en América, en el África Subsahariana y las islas del Océano Pacífico.
Zamenhof se esmeró porque su alfabeto fuera fonético, esto es, que a cada fonema le correspondiera una letra. La idea de cambiar los dígrafos, como el «ch» del francés para «ŝ» o el «sz» del húngaro para «s», dio origen a las letras con diacríticos, o como se las llama en esperanto ĉapelitaj literoj (letras con sombrero). Los supersignos muestran sonidos que no estaban originalmente en el alfabeto latino.
En el período del proto-esperanto, Zamenhof usó signos inspirados en la ortografía polaca, pero finalmente se decidió a utilizar el circunflejo (francés) como una bella manera de formar las letras necesarias en esperanto: Ĉ, ĉ, Ĝ, ĝ, Ĥ, ĥ, Ĵ, ĵ, Ŝ, ŝ. El diacrítico para la ŭ fue tomado del alfabeto cirílico, es llamado «luneto» y sirve para mostrar la semivocal.
22 letras son idénticas a las del alfabeto español (ñ, q, w, x e y se omiten). Las 6 restantes tienen marcas diacríticas, ĉ, ĝ, ĥ, ĵ, ŝ, y ŭ (es decir, c, g, h, j, y s circunflejo, y u breve). El alfabeto completo es como sigue:
A | B | C | Ĉ | D | E | F | G | Ĝ | H | Ĥ | I | J | Ĵ | K | L | M | N | O | P | R | S | Ŝ | T | U | Ŭ | V | Z |
a | b | c | ĉ | d | e | f | g | ĝ | h | ĥ | i | j | ĵ | k | l | m | n | o | p | r | s | ŝ | t | u | ŭ | v | z |
Zamenhof simplemente agregó una -o a cada consonte para crear el nombre de la letra, con las vocales presentándose solas: a, bo, co, ĉo, do, e, fo, etcétera. Los símbolos diacríticos se representan por sí solos. Por ejemplo ĉ se puede llamar ĉo ĉapela o co ĉapela, de ĉapelo (sombrero), y ŭ se puede llamar ŭo luneta o u luneta, de luno (luna) más el diminutivo -et-.
El sistema propuesto por Kálmán Kalocsay de recitar el abecedario rítmicamente es el siguiente:
Con la excepción de c ([ts]) y las letras con diacríticos, el alfabeto en general tiene valores que coinciden bastante con los del Alfabeto Fonético Internacional (vea fonología del esperanto). Existe una correspondencia letra-sonido de uno a uno; y el hablante de esperanto tiene que intentar esforzarse por pronunciar cada palabra debidamente, ya que de ello depende la comprensión del receptor.
Escritos a mano, los diacríticos no presentan problema alguno. Sin embargo, debido a que no aparecen en los teclados alfanuméricos estándar, se han desarrollado una serie de métodos alternativos para poder representar los diacríticos en texto impreso.
El método original fue una serie de dígrafos ahora conocidos como el «sistema-h», pero con el auge de procesadores de texto por computador el denominado «sistema-x» se volvió más popular que el «sistema-h» al ser más claro. Sin embargo, con la llegada de Unicode, la necesidad de utilizar esos sistemas ha disminuido.
El sistema-h, recomendado por Zamenhof, representa las letras con circuflejo por medio de la h, de la siguiente forma: ch = ĉ, gh = ĝ, sh = ŝ, jh = ĵ, u = ŭ y hh=ĥ. Uno de los problemas que presenta es que la h es usada con bastante frecuencia, por tanto su uso se puede hacer ambiguo.
El sistema-x representa las letras con circuflejo con una x. Por tanto cx = ĉ, gx = ĝ, hx = ĥ, jx = ĵ, sx = ŝ y ux = ŭ. Tiene la ventaja sobre el sistema-h que al no ser la x parte del alfabeto del esperanto se puede asociar el reemplazo con la respectiva letra real. Este sistema es muy usado en correo electrónico o sistemas sin Unicode o sin teclados especiales.
Otros dos sistemas, pero no muy usados, son uso del circunflejo (^) (por ejemplo c^ = ĉ) o apóstrofo (') (c'= ĉ).
Se afirma que, como el alfabeto es latino, se contrapone al proyecto de la lengua al no ser verdaderamente internacional, ya que existen muchos otros alfabetos. Sin embargo, Zamenhof precisamente escogió el alfabeto latino por ser el más conocido.
Algunas propuestas han apuntado principalmente contra la "C", que representa el fonema /ts/, y rechazan su utilización: «paco» => «patso».
Jon Walter Yung creó el Nova Helpalfabeto, con el objetivo de evitar las letras con circunflejo. Él propone usar «y» en vez de «j», «j» en vez de «ĝ», etc.
Sin embargo, ninguna reforma se ha popularizado.
Los prefijos no siempre implican el final completo de la palabra, ya que puede conservar, modificar o eliminar la última letra. Esto contradice los sufijos de verbos, sustantivos, adjetivos, etc. exigiendo una memorización sin reglas definidas.