Skip to content

Instantly share code, notes, and snippets.

Last active Oct 9, 2019
What would you like to do?
Download Custom Slack Emojis

Download Emojis from Slack Web Client

Use the emoji.list Slack API to download the custom emojis list from Slack. Due to the CORS policy on emoji endpoints, it is not possible to download the emojis from the Slack web client using JavaScript. Emoji URLs do not require authentication, however, so they can be downloaded outside the browser.


Run download.js in your browser to dowload a CSV containing filename,url for each custom emoji.


Run to download files from the CSV and save them to the current directory.

On Windows, run download.ps1 in the same folder as the CSV.

// grab slack custom emoji URLs and save as CSV
var emojis = {};
// get auth token for API request
var authToken = JSON.parse(localStorage.localConfig_v2).teams[slackDebug.activeTeamId].token;
// setup request
var formData = new FormData();
formData.append('token', authToken);
(async () => {
const rawResponse = await fetch('/api/emoji.list', {
method: 'POST',
body: formData
const emojisApi = await rawResponse.json();
emojis = emojisApi.emoji;
// generate CSV
var csvContent = 'data:text/csv;charset=utf-8,';
for (const [name, url] of Object.entries(emojis)) {
if (typeof url === 'string' && url.startsWith('http')) {
var filename = name.replace("'", "\\'") + '.' + url.split('.').pop();
csvContent += filename + ',' + url + '\n';
// download csv
var encodedUri = encodeURI(csvContent);
var csvDownloader = document.createElement('a');
csvDownloader.href = encodedUri; = 'emojis.csv';
$emojis = Import-Csv -Path .\emojis.csv -Header 'Name','Url'
foreach ($emoji in $emojis) {
Invoke-WebRequest -Uri $emoji.Url -OutFile $emoji.Name
for emoji_line in $(cat emojis.csv); do
name=$(echo "$emoji_line" | cut -d, -f1)
url=$(echo "$emoji_line" | cut -d, -f2)
wget -O "$name" "$url"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment