HakoTools

Custom Text Emoji Maker for Slack & Teams

No image to upload, no logo to trace — just type the word your team already uses and turn it into a custom emoji. Pick a font, a color and an outline, then save a transparent PNG ready to upload.

Published: / Published by the HakoTools team

Alignment
Text color
Background
Outline
Preview

Shown at about 22px in actual chats

How it works

What does this tool actually make?

A transparent 128x128 PNG image built from text you type — not an existing emoji from a picker, and not a combination of emoji already on your keyboard. Pick a font, a color (solid or gradient), an optional outline and background, then save the file and upload it as a custom emoji in Slack or Microsoft Teams. Everything happens in your browser; the text you type is never sent anywhere.

How do I use it?

  1. Type the text for your emoji into the text box (line breaks for up to 4 lines)
  2. Adjust font, alignment, text color (solid or gradient), background and outline
  3. Check the preview — use "Preview on dark" to see how it looks in dark mode
  4. Press Save PNG to download the 128x128 image
  5. In Slack: workspace name menu → Tools and settings → Add custom emoji. In Teams: open the emoji picker in a chat → the + icon → upload

What size and format do Slack and Teams actually want?

Both want a 128x128px PNG. Slack's recommended size is 128x128px with a file size limit of 128KB (131,072 bytes); Teams recommends the same 128x128px for custom emoji. This tool always exports 128x128px PNGs, and a text-only stamp typically lands at 5–15KB, well under either limit, so the same file works for both without resizing.

ServiceRecommended sizeFile size limitFormat
Slack128x128px128KBPNG
Microsoft Teams128x128px—PNG
Discord128x128px256KBPNG

How is the font size chosen?

Automatically, to the largest size that fits the canvas (auto-fit). A short word on one line gets a large size that fills the width; two lines get whatever height allows both to fit. There is no manual size field to fight with. The canvas itself is drawn at 4x resolution (512x512px) and then scaled down to 128x128px, which is what keeps the edges smooth instead of jagged.

How much text actually stays readable at chat size?

Custom emoji render at only about 22px in a real chat, so 4–6 characters on one line, two lines at most is the practical ceiling. The auto-fit math tells you exactly how far that goes.

This tool reserves 4% padding on each side of the 128px canvas, so the usable area is 128 x 0.92 = 117.76px. For a single line, the font size is roughly the usable width divided by the character count: 4 characters fit at about 29px, 6 at about 19px, 8 at about 14px. Scaled down to the 22px chat size (multiply by 22 ÷ 128), those come out to roughly 5.1px, 3.4px and 2.5px respectively. Given body text usually renders at 14–16px, 8 characters is already pushing it, and anything past 10 is essentially unreadable at chat size.

Adding lines brings the height constraint into play too. Line height is 1.15x the font size, so 2 lines cap out around 51px per line and 3 lines around 34px — a 3-line emoji shrinks to about 5.9px in chat, which only works for "a shape is visible" rather than "the letters are legible."

Input patternFont size on 128px canvasChat size (22px scale)Legibility
1 line, 4 characters~29px~5.1pxReadable
1 line, 6 characters~19px~3.4pxReadable
1 line, 8 characters~14px~2.5pxTight
2 lines (per line)~51px~8.8pxReadable
3 lines (per line)~34px~5.9pxTight

The 2- and 3-line rows are capped by height; when a single line has a lot of characters, width caps it first. The actual size the tool picks is whichever constraint is smaller.

While making itIn an actual chatGGGGGGnice, that closes it out128 x 128pxText at 58px22 x 22pxText at ~10px
The creation canvas and its chat-size rendering, drawn to real scale. The text in the chat bubble on the right is set at the same 14px as ordinary body text, showing how small the emoji shrinks to next to it.

Transparent, solid background, or outline — which should I pick?

Since Slack and Teams both switch between light and dark themes, a transparent background with a white or dark outline is the combination least likely to break in either theme.

A solid white background shows up as a visible white square once the theme switches to dark. Pure transparency with dark, low-contrast text has the opposite problem — it disappears into a dark background. A single pass of white outline keeps the letterforms visible on both. Use "Preview on dark" before saving to check.

Outline width is set on a 128px basis, from 0 to 8px. Scaled to the 22px chat size (roughly 5.8x smaller), a 1–2px outline becomes 0.2–0.4px in chat — essentially invisible. For a visible edge, use 4–6px. The stroke is drawn along the center of each letter's outline and the fill is painted on top afterward, so a thicker outline never eats into the letterform itself.

How is this different from an emoji picker or combining existing emoji?

A picker only lets you insert emoji that already exist as Unicode characters — the exact picture depends on whichever font your OS or app uses to render that character, which is why the same emoji can look noticeably different on Apple, Google and Microsoft devices. Combining emoji (an emoji sequence) joins several existing characters with a zero-width joiner, and falls apart into separate symbols, or a blank box, on anything that doesn't support that particular combination.

This tool sidesteps both problems by generating a plain PNG image. It looks identical everywhere it's uploaded, has no dependency on the viewer's emoji font, and isn't limited to combinations someone else predefined — it can say anything your team actually types.

Can I use this for a team's actual work Slack or Teams?

As long as the stamp is built only from text you typed yourself, yes — there's no copyright issue in using it at work. The three fonts this tool uses (Noto Sans JP, M PLUS Rounded 1c, Noto Serif JP) are all open-source under the SIL Open Font License and cleared for commercial use. Custom emoji are visible to the whole workspace, so check your organization's guidelines before uploading anything, and don't include anyone else's trademark, logo or likeness without permission.

Notes

  • Do not create or use stamps containing another party's trademark, logo or likeness without permission
  • Follow your workspace's own rules and guidelines for custom emoji
  • Animated GIF output is not supported (static PNG only)
  • The font can take a few seconds to load the first time; the save button is disabled while it loads

Need something bigger to hold up rather than a sticker? The scrolling LED sign maker turns text into a full-screen display for concerts and pickups — also free, also entirely in your browser.

Frequently asked questions

Is this the same as an emoji picker?
No. An emoji picker inserts an existing Unicode emoji from your keyboard; this tool draws a brand-new image from text you type, such as an inside joke or a team's shorthand, and hands you a PNG file to upload as a custom emoji. There is no picker, no combining existing emoji, and no upload of your own artwork — text in, image out.
How do I add the file to Slack or Microsoft Teams?
In Slack, open your workspace name menu, choose Tools and settings, then Add custom emoji, and upload the PNG. In Teams, open the emoji picker in a chat, select the + icon, and upload it there. Both accept a 128x128 PNG, which is exactly what this tool outputs.
Will the background stay transparent in dark mode?
Yes, if you leave the background set to transparent (the default). The tool exports a true transparent PNG, so it sits on both light and dark chat backgrounds without a visible box around it. Adding a thin outline in a contrasting color keeps the text legible on either theme.
Is anything I type uploaded anywhere?
No. Text entry, font rendering and PNG generation all happen in your browser; nothing is sent to a server.
Share this tool: