Branded Image Sharing in Slack and Teams: Keep Logos Crisp at Thumbnail Size
You spend two hours in Figma perfecting a workspace icon, you export it as a 1024-pixel PNG, you drag it into Slack's workspace settings panel, and the mobile sidebar version that 400 coworkers see every morning looks like a smear of pixels with halos around the wordmark. Then somebody on the design team posts a 14 MB screenshot of a Looker dashboard into the engineering channel, and the entire mobile app stalls for 12 seconds while clients pull down the full PNG before they can scroll past. Both problems are the same problem dressed up differently: Slack and Microsoft Teams compress, resize, and recompress every image you upload, and the platforms decide what your image looks like, not you.
Slack and Teams target tiny payloads so that thumbnails load fast across thousands of channels, and they apply their own JPG re-encoding on top of whatever you send. They flatten transparency. They downsample at non-integer ratios on Retina devices. They strip the careful IPTC credit you embedded. If you want your brand assets to look intentional rather than blurry, and if you want your channels to stay fast for the coworker reading on a train, you need to ship files that already match the display target the platform is aiming at. This guide walks through every surface, every cap, and every quiet rule the two platforms enforce so your assets stop arriving broken.
Why your logo looks fine on desktop but terrible on mobile
Slack renders workspace icons at 132x132 pixels on the sidebar, but on a Retina mobile device it samples down from a 264x264 source. Teams does similar 2x density scaling for high-DPI screens. If you upload a 512x512 PNG with a transparent background, Slack flattens it to its theme color, re-encodes to JPG at roughly 75 percent quality, and the resulting downsample produces visible halos around fine text. The fix is to pre-flatten on the exact background color your workspace uses and export at 2x the final display size, not 8x.
Background: how chat platforms became image-heavy
When Slack launched in 2013, channels were mostly text plus a handful of pasted screenshots. By 2026 the average Slack message thread carries 4 to 8 inline images, and Teams has overtaken Slack as the dominant enterprise chat platform with similar image-heavy patterns. Image traffic now accounts for roughly 60 percent of total chat bandwidth across both platforms. Engineering channels share Looker and Datadog dashboards as inline screenshots. Marketing channels share campaign mocks and asset reviews. Sales channels share competitor screenshots and prospect collateral. The result is that every team is operating an ad-hoc image pipeline through chat, with nobody designing the pipeline for quality or weight.
Recommended specs for the four image surfaces
Workspace icons: 250x250 pixels minimum, square, flattened JPG under 100 KB. User avatars: 192x192 pixels, square, JPG under 80 KB so the mobile app loads them instantly in long channels. Channel banners (Teams): 1920x480 pixels for the wide hero, JPG quality 80, target file under 250 KB. Inline screenshots in messages: 1600 pixels on the long edge is more than enough since both platforms downscale anything larger. Use PNG to JPG to flatten transparent logos against your brand color before upload.
The file-size ceilings that quietly throttle big channels
Slack Enterprise Grid has a 1 GB per-file upload cap, but the per-channel attachment quota is what bites you. Free Slack workspaces share a 5 GB total file pool, and once you cross it old attachments stop loading entirely. Teams has a 250 MB per-file cap and a per-tenant SharePoint limit that varies by plan. The point is: don't ship a 12 MB PNG screenshot of a dashboard when an 800 KB JPG would have looked identical. Run heavy assets through JPG compressor before pasting them into a channel that 200 people scroll through every day.
Inline screenshots: the format Slack actually prefers
Slack accepts PNG, JPG, GIF, HEIC, WebP, and a half-dozen other formats, but it converts almost everything to JPG for thumbnail previews. If you paste a 5 MB PNG of a Looker dashboard, every viewer's client downloads the full original on first preview. A 600 KB JPG of the same dashboard would render visually identical at the thumbnail size and at the modal expand size. Use image converter to batch-convert directories of PNG screenshots before bulk uploads.
Calculating your KB budget before you export
A safe rule for a Slack workspace icon is to stay under 100 KB; for a Teams channel banner, under 250 KB; for inline screenshots, under 1 MB. If you need to predict the file size of a JPG at a given quality and resolution before you export, run the numbers through the image file size calculator. It gives you a JPG-quality slider that maps to expected KB output, which saves the export-test-reupload cycle.
Animated GIFs versus MP4 loops
Slack autoplays GIFs but pauses them on hover only after the first loop. Teams converts uploaded GIFs into HTML5 video previews on the desktop client. If your GIF is over 5 MB, the mobile clients fall back to a static first-frame thumbnail until the user taps. Keep GIFs under 5 MB and 800 pixels wide, or convert them to MP4 for any animation longer than 4 seconds.
The metadata Slack strips and what it keeps
Slack strips EXIF GPS and camera data from every uploaded JPG, which is good for privacy but means your carefully embedded IPTC copyright and credit fields disappear. Teams behaves similarly. If you need to verify what metadata survives an upload roundtrip, download the file back from the channel and inspect it with image info. You'll see the platform's re-encoder strips almost everything except basic color profile and orientation tags.
Workspace icon migration checklist
When you rebrand or rotate a workspace icon, export a 1024x1024 master in your design tool, flatten it on the brand background color, downsample to 250x250, and export as JPG quality 85. The resulting file should be under 60 KB. Upload it, then check the appearance on iOS, Android, and desktop. If the 48x48 mobile sidebar version looks fuzzy around text, your master had too much fine detail; simplify the mark before re-exporting.
Custom emoji and reaction images
Slack custom emoji upload at 128x128 pixels and cap at 128 KB per file. Animated emoji (GIF or APNG) cap at 128 KB total. Most brand emoji sets get exported as PNG and uploaded directly, but if your design uses transparency badly (a white logo on a transparent background that disappears on light themes) you should flatten against a neutral gray or use a colored shield. Test your custom emoji on both default and dark Slack themes before rolling out across the workspace.
Step-by-step: shipping a brand-safe Slack workspace icon
- Export at 2x. From Figma, Illustrator, or your design tool, export the icon at 500x500 pixels (2x the 250x250 display target).
- Flatten transparency. Composite the artwork against the exact brand color used in your Slack theme. Use PNG to JPG with a specified background color rather than letting Slack pick one.
- Convert to JPG quality 85. This typically lands around 40 to 60 KB for a clean logo mark.
- Inspect the file. Open it in image info and confirm sRGB color space, dimensions 500x500, and file size under 100 KB.
- Upload to a test workspace first. Most enterprises run a sandbox workspace; use it before pushing to production.
- Check on iOS, Android, desktop. The 48x48 mobile sidebar is the harshest test; if text in the mark goes mushy, simplify the source and re-export.
- Publish to production workspace. Document the source file path so the next designer can iterate without re-engineering.
Common mistakes and how to fix them
- Mistake: uploading a 4K PNG screenshot. Fix: pre-compress through JPG compressor to under 1 MB before paste. Slack will recompress regardless, and a smaller source produces a cleaner final.
- Mistake: transparent PNG logos on workspace icons. Fix: flatten against your brand color first. Slack picks an ugly default background otherwise.
- Mistake: HEIC photos from iPhone pasted directly. Fix: convert with HEIC to JPG for older Windows desktop clients that misrender HEIC previews.
- Mistake: animated GIFs over 5 MB. Fix: shorten to under 4 seconds or convert the source to MP4 and link a video file instead.
- Mistake: stripping IPTC credit before upload. Fix: don't bother embedding IPTC on Slack-bound files since the platform strips it; embed credit visually in the image itself if attribution matters.
- Mistake: shipping different banner sizes per Teams channel. Fix: standardize on 1920x480 across the org so the same JPG works in every channel.
Real-world examples
Shopify's design org standardized on a single 250x250 JPG workspace icon and a 1200x300 channel banner template, both flattened against the brand purple. The result was visual consistency across 80+ Slack channels and no more mobile sidebar smearing. Notion's marketing team built a Figma export script that batched all campaign screenshots through JPG compressor targeting 800 KB before posting to launch channels, cutting channel image traffic by 70 percent. Microsoft's internal Teams deployments reportedly use a 1920x480 channel banner spec with JPG quality 80, hosted on internal CDN to bypass SharePoint quota issues.
Quick comparison: Slack vs Teams image handling
| Surface | Slack | Teams |
|---|---|---|
| Workspace/team icon | 250x250 min, JPG, <100 KB | 240x240 min, PNG/JPG, <100 KB |
| User avatar | 192x192, JPG, <80 KB | 240x240, JPG, <100 KB |
| Channel banner | Not supported | 1920x480, JPG, <250 KB |
| Inline upload cap | 1 GB (Enterprise) | 250 MB |
| Free tier file pool | 5 GB total | SharePoint-bound |
| Custom emoji | 128x128, 128 KB | Sticker-style, 1 MB |
| GIF handling | Autoplay loop, <5 MB recommended | HTML5 video preview |
| Metadata stripped | EXIF, IPTC | EXIF, partial IPTC |
Advanced tips for image-heavy teams
- Pre-generate retina assets. Export icons at 1x, 2x, and 3x so you have ready-made variants for different surfaces.
- Use a shared brand-asset Slack canvas. Pin the canonical brand JPGs to a canvas that every channel admin references.
- Automate batch compression via Slack workflow. A Zapier workflow can intercept uploads to a "raw" channel and republish optimized copies to a "ready" channel.
- Measure bandwidth weekly. Slack Analytics shows file traffic by channel; flag any channel exceeding 5 GB/week for optimization.
- Lock theme colors before designing icons. If your Slack theme changes, every workspace icon needs re-flattening.
- Don't use animated workspace icons. Slack accepts GIF workspace icons but the mobile clients show only the first frame, which is usually the worst frame.
- Maintain a "before upload" checklist. Print and tape to the designer's monitor: dimensions, KB, color space, flattened.
FAQ
Why does my Slack icon look pixelated only on iPhone?
Slack mobile renders icons at Retina 3x density on modern iPhones, so a 250x250 source gets sampled down to a 48x48 display from a non-integer ratio. Export at 500x500 instead of 250x250 to give the downsampler more pixels to work with.
Can I post HEIC images directly to Slack?
Yes, modern Slack clients render HEIC, but older desktop clients and Windows-based viewers may show a broken preview. Convert with HEIC to JPG before pasting if you have any non-Mac coworkers.
What's the actual upload limit for Slack free tier?
Slack free workspaces share a 5 GB total file pool across all channels. Once you cross it, older files become inaccessible. Paid plans expand the cap; Enterprise Grid removes it but applies per-channel attachment quotas.
Does Teams strip image metadata too?
Yes. Teams strips most EXIF and partial IPTC during ingest, similar to Slack. Use image info to confirm what survived a round-trip on either platform.
Should I use PNG or JPG for inline screenshots?
JPG. Both platforms convert PNGs to JPG for thumbnail previews anyway, so save the bandwidth by pre-converting and pre-compressing.
How do I keep brand colors consistent across Slack channels?
Maintain a single 1920x480 banner template (Teams) and 250x250 icon template (Slack), version-controlled in your design system. Every channel uses derivatives of those two source files.
Is there a way to bypass Slack's re-encoding?
No. Slack re-encodes for performance reasons and offers no opt-out. The only workaround is to host the image externally and post a link, but that loses the inline preview.
Pasted-image workflow on macOS versus Windows
The CMD-Shift-4 screenshot on macOS produces PNG by default and pastes directly into Slack as a high-quality PNG. The same workflow on Windows (Snipping Tool or Win+Shift+S) also produces PNG but with subtle color profile differences that can shift slightly when Slack re-encodes. For team consistency, configure macOS to save screenshots as JPG (via the defaults write com.apple.screencapture command) and Windows to save as JPG through the Snipping Tool preferences. The result is consistent file formats across platforms, smaller upload sizes, and faster channel rendering.
Slack Connect and external workspace image sharing
Slack Connect channels (shared between two or more workspaces) inherit the more restrictive workspace's file-size limits. If your enterprise workspace allows 1 GB uploads but your vendor's free workspace caps at 5 GB total file pool, your shared channel inherits the free-tier limit. Pre-compress images shared in Slack Connect channels through JPG compressor targeting under 1 MB to avoid hitting the partner's pool quota. Document the file-size convention in the channel topic so both sides understand the constraint.
Brand-asset governance across channels
Once your workspace passes 100 channels, brand-asset drift becomes inevitable: someone uploads an older logo to a marketing-archive channel, that older logo gets reposted in a customer-success channel, and within months the workspace has visual chaos. Establish a single canonical brand-asset Slack canvas (or Teams wiki page) with the current logo JPG, banner JPG, and approved emoji set, linked from the workspace homepage. Quarterly, audit the top 20 most-active channels for any image use that doesn't match the canonical assets. The governance overhead pays back in consistent brand presence and faster onboarding for new admins.
Screen recording and the GIF-versus-MP4 decision tree
Demo videos in Slack and Teams hit a fork: ship as animated GIF (autoplays in the channel) or as MP4 (requires click-to-play). GIFs of UI walkthroughs explode in file size; a 10-second screen recording at 800 pixels wide can easily hit 30 MB as GIF and 2 MB as MP4. Both Slack and Teams support inline MP4 playback now, and the experience on mobile is better with MP4 because the platform's video pipeline handles streaming and seek. For anything longer than 4 seconds, convert your screen recording to MP4 with a tool like Gifski-reverse or HandBrake. Reserve GIFs for sub-3-second reactions where the autoplay loop is the point.
Channel-banner refresh cadence
Teams channel banners feel permanent but degrade visually faster than you'd expect: a banner designed for Q1 2025 typically looks stale by Q3 2025 as brand guidelines drift. Plan a quarterly banner refresh tied to the marketing-design system. The refresh workflow: regenerate the 1920x480 master in Figma, flatten through PNG to JPG, compress with JPG compressor to under 200 KB, and update all production channels in a single batch. Document the version (banner-v8.jpg) in the channel topic so the next admin can find the source. Without quarterly refresh discipline, you end up with mismatched banners across 30+ channels within a year.
Accessibility considerations for chat imagery
Both Slack and Teams support alt text on uploaded images, and screen-reader users in your org depend on it. Type a brief description ("dashboard screenshot showing weekly active users up 12 percent") into the alt-text field when posting any image with meaningful information content. Don't ship workspace icons or banners with low-contrast text; the WCAG AA 4.5:1 contrast ratio applies to readable elements in chat surfaces just as it does on web pages. Test contrast on light and dark themes before publishing branded surfaces, since Slack and Teams users frequently flip themes.
Ship clean brand assets at every size
Slack and Teams will keep compressing whatever you give them, so the win is to ship pre-optimized JPGs that already match the display size and KB ceiling each surface targets. Flatten transparent PNGs against your brand color with PNG to JPG, squeeze inline screenshots through JPG compressor, and budget file size in advance with the image file size calculator. For mass screenshot prep, lean on the image converter batch flow, and verify what survived the upload with image info. Your logo will stop looking like a smudge in 48x48 sidebars, and your channels will load faster for everyone scrolling on cellular.