The Ellipsis in WordPress: Why … Beats ... Every Time
If you’ve spent any time developing for WordPress, you’ve probably encountered this seemingly trivial question: should you use three dots (...) or the proper ellipsis character (…) in your user-facing strings?
It might look like a minor stylistic choice, but in the WordPress ecosystem, this decision has real implications for code quality, localization, and professional polish. The WordPress core team has made their position clear—and here’s why you should follow their lead.
The Problem with Three Dots
Three periods might be the quickest thing to type, but they’re a typographic compromise. They’re the plain-text fallback, not the real thing.
WordPress does have a built-in function called wptexturize() that automatically converts three periods into a proper ellipsis in post content. However, you should never rely on this for translatable strings. Here’s why:
- Inconsistent application:
wptexturize()isn’t guaranteed to run in every context—JavaScript strings, HTML attributes, or certain admin screens may bypass it entirely. - Unpredictable results: What works in one context might break in another, leading to visual inconsistencies across your plugin or theme.
The WordPress Core Standard
The WordPress core team has been systematically replacing three dots with proper ellipses for years.
In Changeset 24207 (May 2013), core contributor SergeyBiryukov made a sweeping update across multiple files with the message: “Use ellipsis instead of three dots”. This changeset touched 16 different files, removing instances of ... from translatable strings throughout the admin.
Then came Changeset 33939 (September 2015), with the explicit message: “Round 2 of: We should use ellipses … / … instead of three dots/periods … e.g Loading… not Loading…”.
The message is clear: WordPress core developers actively prefer the proper ellipsis character.
The Best Practice: Use … in Translatable Strings
For WordPress localization (l10n), the recommended approach is to use the actual ellipsis character directly in your translatable strings:
// ✅ Recommended
__( 'Loading…', 'my-text-domain' );
__( 'Continue reading…', 'my-text-domain' );
// ❌ Avoid
__( 'Loading...', 'my-text-domain' );
__( 'Continue reading...', 'my-text-domain' );
Why This Matters for Localization
1. Translators need full control
Different languages have different conventions for ellipses. Some languages use different characters, some add spaces, and some have specific rules about when and how to use them. By including the ellipsis as part of the translatable string, you give translators complete control over how it appears in their language.
2. Context is everything
An ellipsis on a button (“Save As…”) serves a different purpose than one indicating truncated text (“Read more…”). Keeping the ellipsis with its specific string allows translators to handle these nuances appropriately.
3. Avoids fragmented strings
Hard-coding punctuation outside of translatable strings can lead to awkward phrasing in other languages where word order differs.
… vs … vs …
You have three options for representing an ellipsis:
| Option | Example | Best Used For |
|---|---|---|
| Unicode character | … | Translatable strings (recommended) |
| HTML entity (named) | … | HTML templates where character encoding might be unclear |
| HTML entity (numeric) | … | RSS feeds or contexts where named entities may break |
For translatable strings, the actual Unicode character … is the clear winner. It’s simple for translators to see and work with, and it aligns with WordPress core practices.
What About Escaping?
A common concern is whether esc_html() or similar escaping functions will handle the ellipsis character correctly.
Good news: esc_html() passes the ellipsis character through unchanged because it’s not a character that needs escaping for HTML. It’s completely safe.
However, if you use the HTML entity … inside a translatable string and then apply esc_html(), you might end up with literal … displayed to users if the string is double-escaped or used in certain contexts.
Summary: The Bottom Line
| Practice | Verdict |
|---|---|
__( 'Loading...' ) | ❌ Avoid—three dots are a typographic compromise |
__( 'Loading…' ) | ⚠️ Risky—may break with escaping or in certain contexts |
__( 'Loading…' ) | ✅ Best practice—clean, translatable, and core-approved |
References for Further Reading
- Changeset 24207 – The foundational core update replacing three dots with ellipses: build.trac.wordpress.org/changeset/24207
- Changeset 33939 – “Round 2” of ellipsis standardization in core: build.trac.wordpress.org/changeset/33939
- WordPress Coding Standards – The official standards that guide these decisions (see the i18n and JavaScript sections)
Final Word
Using the proper ellipsis character … in your WordPress translatable strings isn’t just about looking professional—it’s about following core conventions, respecting translators, and writing more robust code.
The WordPress core team has done the heavy lifting of standardizing this practice. All that’s left is for you to adopt it.
Next time you type ... in a translatable string, stop and use … instead. Your users—and your translators—will thank you.
Have thoughts on this? Drop a comment below or reach out on Twitter. And if you found this helpful, consider sharing it with your fellow WordPress developers.


