PHP Atomchat is a free PHP chat script for low-volume and individual websites.
- Works OOTB and is completely anonymous
- No registration or passwords ever
- Emoji auto conversion and auto select
- Fully themeable and multilingual
- Responsive, cross browser, cross platform
- File uploads, literally zero dependencies
- One click text select for easy copy/paste
- Absolutely no database required
As of v20190322 AJAX has been replaced with SSE. The AJAX option is still available but disabled.
While in theory quite possible, the script could actually run in hybrid mode, using both options at the same time. However, unless you really hate your server and just want to kill it as fast as possible, you are discouraged from attempting any such.
The script generates a default configuration in
config.php when first run or in case the file has been accidentally deleted. All relevant settings can be configured from the superuser screen and are usually effective immediately. Simply refresh the page if in doubt. You can also enable a timeout option to automatically logout inactive users. The default is to leave session handling to PHP settings.
Please visit the superuser screen before making the script public and change at least the prefix and suffix. The rest of the default settings should be fairly save to keep for the time being. Default login as superuser is
Also please note that whatever you enter will be accepted AS IS. In other words, if you put text into a field expecting numbers, the script will accept that but likely break after reading the new configuration. In any such case your best option is to delete
config.php and start over.
Access And Security
An optional access token can be enabled to restrict access, e.g. to keep bots out. You should change the default token value when using the feature. The setting is disabled per default to simplify testing, but is strongly recommended to be enabled in public environments. Just make sure to let your users know the proper token before they start hitting your inbox. Providing the complete URL would be the easiest, like
The script is neither meant nor prepared for use in secure environments!
The script does not record any user data, like IP, date, browser, etc.
Emoji Auto Conversion
When enabled, this feature attempts to automatically convert registered text tokens into graphical Unicode emojis. Hence, you'll get an image, which in fact is entirely text. However, Unicode support varies greatly across devices and platforms.
Google Chrome for desktops is particulary prone to fail. Interestingly though, the mobile version seems to have gotten all the Unicode support the desktop version is lacking; or maybe fonts on Android are just better prepared. Therefore, the definition file
emo.dat covers only a minimal set. YMMV.
gif, jpeg, jpg, png are managed internally and converted to Base64 strings to be available in offline logs. Only these will render auto scaled thumbnails. Any other types produce standard text links. You may need to edit your CSP to add an exception for the
base handler if you don't see the thumbnails.
The script provides a small collection of pre-made themes. Themes just provide colours, while core styles are managed in
default.css. You are advised not to touch this file unless you know what you're doing. Multi themes are enabled per default to allow users to change themes as they see fit. You can disable this option if you prefer a fixed theme.
The script attempts to auto detect the browser's language preferences and checks if a language file exists. If so, the interface will use that language. Else, the configured default language is applied. Users can change language settings at any time.
As an example, consider a native speaker of Japanese on a terminal configured to prefer Italian. Since an Italian language file exists, the script would initally talk Italian. However, since there also exists a Japanese language file, opening the settings screen and selecting Japanese from the list will make the script talk Japanese instantly. Refer to
TRANSLATE.md if your language is missing.
Limitations And Issues
Setting a non-Western default as the page language META may produce strange effects. In mild cases just black and white emojis, in more extreme scenarios effectively placing the hover menu out of reach and hence making it completely unusable. Hard-linking a Western locale fixes the issue. Translations are not affected.
Please open an issue to request assistance; and be patient. I tend to follow-up on any feedback in due time and am open to suggestions; as long as they are meaningful.
Do not open an issue to request help setting up your server, or asking how to create a multi dimensional associative array or any other esoteric foo bar stuff.
That all said, happy Atomchatting.