# Media Repository *Synapse implementation-specific details for the media repository* The media repository * stores avatars, attachments and their thumbnails for media uploaded by local users. * caches avatars, attachments and their thumbnails for media uploaded by remote users. * caches resources and thumbnails used for [URL previews](development/url_previews.md). All media in Matrix can be identified by a unique [MXC URI](https://spec.matrix.org/latest/client-server-api/#matrix-content-mxc-uris), consisting of a server name and media ID: ``` mxc:/// ``` ## Local Media Synapse generates 24 character media IDs for content uploaded by local users. These media IDs consist of upper and lowercase letters and are case-sensitive. Other homeserver implementations may generate media IDs differently. Local media is recorded in the `local_media_repository` table, which includes metadata such as MIME types, upload times and file sizes. Note that this table is shared by the URL cache, which has a different media ID scheme. ### Paths A file with media ID `aabbcccccccccccccccccccc` and its `128x96` `image/jpeg` thumbnail, created by scaling, would be stored at: ``` local_content/aa/bb/cccccccccccccccccccc local_thumbnails/aa/bb/cccccccccccccccccccc/128-96-image-jpeg-scale ``` ## Remote Media When media from a remote homeserver is requested from Synapse, it is assigned a local `filesystem_id`, with the same format as locally-generated media IDs, as described above. A record of remote media is stored in the `remote_media_cache` table, which can be used to map remote MXC URIs (server names and media IDs) to local `filesystem_id`s. ### Paths A file from `matrix.org` with `filesystem_id` `aabbcccccccccccccccccccc` and its `128x96` `image/jpeg` thumbnail, created by scaling, would be stored at: ``` remote_content/matrix.org/aa/bb/cccccccccccccccccccc remote_thumbnail/matrix.org/aa/bb/cccccccccccccccccccc/128-96-image-jpeg-scale ``` Older thumbnails may omit the thumbnailing method: ``` remote_thumbnail/matrix.org/aa/bb/cccccccccccccccccccc/128-96-image-jpeg ``` Note that `remote_thumbnail/` does not have an `s`. ## URL Previews See [URL Previews](development/url_previews.md) for documentation on the URL preview process. When generating previews for URLs, Synapse may download and cache various resources, including images. These resources are assigned temporary media IDs of the form `yyyy-mm-dd_aaaaaaaaaaaaaaaa`, where `yyyy-mm-dd` is the current date and `aaaaaaaaaaaaaaaa` is a random sequence of 16 case-sensitive letters. The metadata for these cached resources is stored in the `local_media_repository` and `local_media_repository_url_cache` tables. Resources for URL previews are deleted after a few days. ### Paths The file with media ID `yyyy-mm-dd_aaaaaaaaaaaaaaaa` and its `128x96` `image/jpeg` thumbnail, created by scaling, would be stored at: ``` url_cache/yyyy-mm-dd/aaaaaaaaaaaaaaaa url_cache_thumbnails/yyyy-mm-dd/aaaaaaaaaaaaaaaa/128-96-image-jpeg-scale ```