- Slack exports messages and attachments primarily in JSON format, with different options and scope depending on the plan purchased.
- User and channel import decisions determine which messages and attachments are preserved or lost.
- Native exports have speed, format, and retention limits that complicate working with large volumes of attachments.
- External eDiscovery tools enhance the search, archiving, and control of Slack attachments at enterprise scale.
When you've been working with Slack for years, it's easy to end up with thousands of messages, channels, and attachments scattered throughout the workspace. The day you need to gather those documents (for an audit, company closure, tool change or simple internal order) you discover that it's not as simple as pressing a "download all" button.
Additionally, Slack exports the information in Unfriendly JSON and TXT fileswith conversations, channels, and users separated into multiple files. If you're looking to batch extract attachments, locate their location, and convert everything into a usable format, it's essential to understand how the export system works and its limitations.
How Slack handles files and attachments

In Slack, every time you upload a document, image, spreadsheet, or presentation, a file with its own internal ID and metadata (who uploaded it, in which channel, when, file type, etc.). That file can be hosted directly in Slack or linked from external applications such as Google DriveBox, OneDrive or other services.
The files can be accessed from various areas of the interface: the tab “Files and Links” From a channel or direct message, the global search bar, or the general file explorer of the workspace. However, for bulk exports, what matters most is how Slack stores and exposes that data in its export tools.
A relevant detail is that Slack generates an automatic preview. of many files as part of the message: images, PDFs, Office documents, etc. These previews have technical limitations (for example, images with less than 25.000 pixels on the longest side and less than 45 million pixels in total, or Office documents of less than 50 MB to be able to be previewed).
All files you upload directly to Slack are subject to a security analysis to detect viruses or malwareIf the system detects a problem, the file will not be uploaded. In the rare case of a false positive, you will need to contact Slack support to have them review the blocked upload.
Within a channel or DM, you can open the archives tab to see everything shared in that conversation and, if you wish, organize those documents into sections Customized. From there it's easy to share a file in another channel, send an external link (on paid plans) or download it to your computer, although on mobile the download is practically limited to images.
What can you actually export from Slack
Before thinking about extracting attachments in batches, it's important to understand that Not all Slack plans offer the same level of exporting.Your options depend on both your subscription and your role within the workspace.
In the Free and Pro plans, owners and administrators can export data from the public channelsHowever, there is one important limitation: the free plan only allows access to the last 90 days of messages and their attachments. Private channels and direct messages are excluded, unless Slack authorizes a special export for legal or compliance reasons.
The Business+ and Enterprise Grid plans greatly expand the range. With these plans, owners and administrators with appropriate permissions can export a virtually complete copy of all messagesPublic channels, private channels, and direct messages. Furthermore, Enterprise Grid allows exporting data focused on a specific user (also called a custodian), which facilitates auditing or eDiscovery tasks.
In any case, the exports not only include the text of the conversations, but also references to the attached files shared on those channels, as well as information about who uploaded them, in what context, and with what metadata.
It's worth noting that Slack can, in specific cases, authorize additional exports to administrators of Free or Pro plans if they demonstrate a legal or regulatory need and provide the relevant consent. It is not automatic or immediate, but it exists as a last resort.
Export formats: JSON, TXT and their impact on attachments

From the factory, Slack exports almost everything in JSON formatEach channel or conversation is saved as a JSON file that includes all messages, with their date, user, content, subtypes, and any attachments. In some specific cases (such as certain single-user exports), it is also offered txt format, more legible, but not the norm for a massive dump.
In these JSON files, messages can contain an "attachments" field that details the list of attachments linked to that message. This is where much of the key information is hidden. locate and extract the attachments in bulkAlthough reading it "without text" isn't exactly comfortable.
The TXT format, when available, displays a much more user-friendly conversational flow: timestamp in GMT, username, and message textEdited and deleted messages, if retained by retention policy, appear in specific sections at the end of the archive (“Edited Messages” and “Deleted Messages”), indicating who made the change, when, and what the original content was.
These TXTs, however, do not differentiate between messages from the main thread and those belonging to conversation threads; everything is integrated into the same flow, which can complicate the reconstruction of complex contexts if you are handling a large volume.
It's important to keep in mind that, natively, Slack does not export external attachments (for example, Google Drive or Box documents) as files included in the zip. What you get are the references and links to those resources. In contrast, files uploaded directly to Slack can be exported and then accessed using the paths specified in the JSON or in auxiliary files such as file_conversations.json or specific folders.
Who can export and import data in Slack
The ability to manipulate exports and imports in Slack is not available to everyone. Only those with limited access have it. owners and managers of the workspace, as well as the organization owners in Enterprise Grid, have permission to export data.
Regarding importing (for example, when you merge two workspaces or migrate from one to another), only the workplace owners They can launch the process. In Enterprise Grid, direct imports to the organization are not supported: you would first have to import the data into a normal workspace and then migrate it to the Enterprise organization.
There is also an important distinction between standard exports (those that appear in the Import/Export interface) and advanced exports of "All channels and conversations", which can only be requested by owners and, in some cases, require Slack approval, especially if they include private channels and DMs.
When importing, it is key to understand how the users, channels and filesThe decisions you make at this stage have a direct impact on which messages, attachments, and conversations actually end up in the new workspace.
How Slack's import tools work
Slack has a specific tool for moving data from one workspace to another, that is, for merge spaces or migrate informationThe space from which you take the information is called the "source workspace" and the one that receives it is the "destination workspace".
There is no hard limit on how much data you can import at once, but there is a maximum practical processing capacityIf the export file is very large, you may need to split it into date ranges and run multiple imports instead of just one. When dealing with a very large dataset, it's generally advisable to coordinate with Slack support to plan the operation properly.
Another relevant restriction is that the Imports to Enterprise Grid organizations are not directIf you want to bring data to an organization of that type, the path involves first importing it into a separate workspace and then migrating that workspace to the Enterprise organization.
Fine-tuning the workspace (preferences, security, custom profile fields, custom emojis, user groups, etc.) They are not transferred upon importThese details must be recreated manually in the destination workspace, as well as the configuration of the third-party applications and integrations.
Regarding the files, they will be imported provided that two conditions are met: The user who shared them is included in the import and the conversation (channel or DM) where they were shared is also imported. Attachments from apps like Google Drive, Box, or other integrations are not copied: the reference is maintained, but they are not downloaded or re-hosted in Slack.
User import options and their effect on attachments
When you upload an export file to import into another space, Slack lets you decide how to treat each user. This is key because Importing messages and files depends on how you configure those accounts..
At a bulk level, you can apply actions to all users from a dropdown menu: merge users, import them as new and invite them, import them as deactivated, import only their messages, or not import them at all. This global choice overrides any individual user settings if you change the option once it's set.
Merging users means that Slack Link accounts with the same email address between source and destination. If you force a merge with different emails, you must proceed with extreme caution, as you could incorrectly mix identities. The "Import and invite to Slack" option creates new members in the destination workspace, assigning them the basic role of member (not admin or owner).
If you choose “Import as disabled”, Slack brings in the messages (and, by extension, the linked files) but keeps the account inactive until you manually reactivate it. This is useful when you want to preserve the complete history without giving the user immediate access.
The options “Import only your messages” and “Do not import” are more radical: in the first case, the messages are kept associated with the name, but No user account is createdIn the second option, messages, files, and any trace of the user are excluded. Note that if you set someone to "Import only their messages" or "Don't import" and they are part of your direct messages, those DMs will not be imported.
Guest users have their own specific characteristics: They cannot be merged with existing guest accounts They can only be imported as full members or deactivated members. Later, if needed, you can convert them back to guests or reactivate their guest accounts.
Importing channels, messages, and attachments
For channels, Slack also offers a set of options for both batch and individual channels. You can merge channels with existing open channels In the destination workspace, create new channels (open or closed) or do not import them.
The merge only works with open channels: You cannot merge with existing closed channelsIn that case, if you want to keep a closed channel from the source space, you will have to import it as a new closed channel, which may generate duplicates (#private-project and #private-project2, for example) that you can then archive as needed.
You can also choose to import some channels and not others, selectively. Channels shared with external organizations will be imported as normal open channelsLater, if needed, you can share them again. Messages from external users are imported along with the channel, although no account is created for them in the destination workspace.
Archived channels can also be brought in, although at the end of the import process they are unarchivedYou can then archive them again if you want to keep them out of the active list. Finally, direct messages (DMs) can only be imported if the export file includes "all channels and conversations" and provided that all participants in each DM are configured to be imported using one of the options that allow their messages to be retrieved.
All of this has a direct impact on attachments: a file shared in a channel that is not imported, or by a user you have marked as “Do not import”, He is left out of the new spaceHence the importance of planning the import strategy well before pressing the start button.
Phases of the import process and relationship with the files
Slack processes imports in several stages, always in the same order. First, Create or merge user accounts based on the chosen configuration. Then, it generates the empty channels (and the DMs if the file includes them).
In a third stage, they are imported messages, threads and files to the channelsSimultaneously, in a fourth parallel phase, messages, threads, and files from direct messages are incorporated. The import process does not proceed to the fifth stage until these two stages are complete.
The fifth and final stage consists of add users to channels and index all messages and files so they appear in search results. This is why, for much of the process, channels may appear empty or incomplete; information is being internally compiled before becoming fully visible.
While the import is running, users can continue working in the destination space, although it is recommended that Don't touch channel or user management (changing channel names, archiving them, making them shared, promoting or demoting members, editing emails, activating or deactivating accounts, etc.). These types of on-the-fly changes can cause import failures.
The time it takes for an import to complete depends on How many channels, users, and files? There are other factors involved, in addition to the total size of the export file. There is no official, fixed estimate; in large environments, it can range from minutes to many hours.
How to navigate through an export to locate attachments
Once you have downloaded the exported zip file, the less glamorous part begins: Understanding the structure of folders and filesEach channel or conversation usually has its own folder or JSON file, and you'll also find global files like channels.json, users.json o file_conversations.json, which function as indices.
To translate the alphanumeric IDs you see in the “channel” or “user” fields into readable names, you will need to consult metadata files. For example in channels.json You will know that ID C0123456 corresponds to the #sales channel, and in users.json It indicates which user is U123456, their email address and their display name.
If you're interested in a specific attachment, a typical strategy is to open the TXT file (if available) or JSON from the conversation where it was shared. Once you've located the corresponding message, you can note the file ID (something like F01243S814M) and use it to find the associated folder within the exported files directory.
Slack exports canvas comments and embedded files to folders with specific IDs (for example, FC:F05UA7XQXHS). To associate comments and files from a canvas with the original canvas, you need to cross-reference the information from file_conversations.json and then open the corresponding FC folders.
In Enterprise organizations with marked-up content, exports that include “all channels and conversations” also incorporate flagged messages and review commentsThis may be relevant if the attachments are related to audits, internal investigations, or regulatory compliance processes.
Limitations of Slack exports when working with attachments
Slack's native export tool is powerful, but it has important practical limitations which is useful to know if your goal is to work comfortably with batch attachments.
First, exports can be considerably slowThis takes time both to generate and download, especially in spaces with many years of activity. Furthermore, if you need special exports (for example, those that include DMs and private channels on plans lower than Enterprise), the additional processing with Slack adds even more time to the process.
Secondly, export options are relatively rigid: They are based on date ranges and, in some cases, on specific users.In large organizations, this produces massive files that are difficult to analyze and process without external tools that allow filtering by custodian, channel, keyword, or other more refined criteria.
To this we must add the handicap of the formats: JSON and TXT are not exactly easy to read or search If you need to review large volumes of data, transforming these files into a convenient conversational format usually requires scripts, external processors, or specialized software.
Finally, exports are not captured by default. edits and deletions of messagesThey are only retained if the administrator has configured retention policies that expressly include these variants, an option available only in some paid plans and which must be proactively activated.
As a side effect, if you are conducting sensitive research or a legal audit, not having a complete change log This can increase the complexity (and cost) of the review process, especially when large volumes of related attachments are involved.
External solutions and eDiscovery for managing attachments at scale
For many companies, especially in regulated environments or with high legal exposure, Slack's native export falls short. That's why other solutions have emerged. third-party tools specializing in eDiscovery and Slack integrationcapable of capturing messages and attachments in real time and storing them in searchable files.
These solutions are typically connected via the Slack Discovery API, available to Enterprise Grid organizations, allowing them to securely access messages from public, private channels and DMs, as well as reviews, deletions and metadata relevant to compliance and auditing.
The great advantage is that these types of platforms can rebuild the conversations in a format very similar to Slack, with all the context surrounding the attachments, facilitating searches by custodian, channel, keywords, file type or time range, among other intelligent filters.
In addition, many include advanced features of data loss prevention (DLP)These tools are capable of identifying and blocking the sharing of sensitive information in Slack messages and attachments in real time. This reduces the risk of accidental leaks or regulatory non-compliance related to data sent as message attachments.
When these archiving and search capabilities are combined with AI-powered contextual analytics, organizations gain a a much clearer vision of the “who, what, where, when and why” behind every message and file, which greatly simplifies internal investigations and complex legal processes.
Ultimately, while it's possible to work solely with Slack's native exports to extract attachments in batches, the experience can be quite cumbersome. Having a clear export and import strategy, effectively leveraging retention policies, and, when necessary, using external eDiscovery tools makes all the difference between a chaotic mess of JSON and a clean Slack file. organized, searchable and really useful.
Passionate writer about the world of bytes and technology in general. I love sharing my knowledge through writing, and that's what I'll do on this blog, show you all the most interesting things about gadgets, software, hardware, tech trends, and more. My goal is to help you navigate the digital world in a simple and entertaining way.
