---
title: "Supported Content Types"
sidebarTitle: "Content Types"
description: "All the content formats Supermemory can ingest and process"
icon: "file-stack"
---
Supermemory automatically extracts and indexes content from various formats. Just send it—we handle the rest. See [Add Memories](/add-memories) to learn how to ingest content via the API.
## Text Content
Raw text, conversations, notes, or any string content.
```typescript
await client.add({
content: "User prefers dark mode and uses vim keybindings",
containerTags: ["user_123"]
});
```
**Best for:** Chat messages, user preferences, notes, logs, transcripts.
---
## URLs & Web Pages
Send a URL and Supermemory fetches, extracts, and indexes the content.
```typescript
await client.add({
content: "https://docs.example.com/api-reference",
containerTags: ["documentation"]
});
```
**Extracts:** Article text, headings, metadata. Strips navigation, ads, boilerplate.
---
## Documents
### PDF
```typescript
await client.add({
content: pdfBase64,
contentType: "pdf",
title: "Q4 Financial Report"
});
```
**Extracts:** Text, tables, headers. OCR for scanned documents.
### Microsoft Office
| Format | Extension | Content Type |
|--------|-----------|--------------|
| Word | `.docx` | `docx` |
| Excel | `.xlsx` | `xlsx` |
| PowerPoint | `.pptx` | `pptx` |
```typescript
await client.add({
content: docxBase64,
contentType: "docx",
title: "Product Roadmap"
});
```
### Google Workspace
Automatically handled via [Google Drive connector](/connectors/google-drive):
- Google Docs
- Google Sheets
- Google Slides
---
## Code & Markdown
```typescript
// Markdown
await client.add({
content: markdownContent,
contentType: "md",
title: "README.md"
});
// Code files (auto-detected language)
await client.add({
content: codeContent,
contentType: "code",
metadata: { language: "typescript" }
});
```
**Extracts:** Structure, headings, code blocks with syntax awareness.
Code is chunked using [code-chunk](https://github.com/supermemoryai/code-chunk), which understands AST boundaries to keep functions, classes, and logical blocks intact. See [Super RAG](/concepts/super-rag) for how Supermemory optimizes chunking for each content type.
---
## Images
```typescript
await client.add({
content: imageBase64,
contentType: "image",
title: "Architecture Diagram"
});
```
**Extracts:** OCR text, visual descriptions, diagram interpretations.
**Supported:** PNG, JPG, JPEG, WebP, GIF
---
## Audio & Video
```typescript
// Audio
await client.add({
content: audioBase64,
contentType: "audio",
title: "Customer Call Recording"
});
// Video
await client.add({
content: videoBase64,
contentType: "video",
title: "Product Demo"
});
```
**Extracts:** Transcription, speaker detection, topic segmentation.
**Supported:** MP3, WAV, M4A, MP4, WebM
---
## Structured Data
### JSON
```typescript
await client.add({
content: JSON.stringify(userData),
contentType: "json",
title: "User Profile Data"
});
```
### CSV
```typescript
await client.add({
content: csvContent,
contentType: "csv",
title: "Sales Data Q4"
});
```
---
## File Upload
For binary files, encode as base64:
```typescript
import { readFileSync } from 'fs';
const file = readFileSync('./document.pdf');
const base64 = file.toString('base64');
await client.add({
content: base64,
contentType: "pdf",
title: "document.pdf"
});
```
---
## Auto-Detection
If you don't specify `contentType`, Supermemory auto-detects:
```typescript
// URL detected automatically
await client.add({ content: "https://example.com/page" });
// Plain text detected automatically
await client.add({ content: "User said they prefer email contact" });
```
For binary content (files), always specify `contentType` for reliable processing.
---
## Content Limits
| Type | Max Size |
|------|----------|
| Text | 1MB |
| Files | 50MB |
| URLs | Fetched content up to 10MB |
For large files, consider chunking or using [connectors](/connectors/overview) for automatic sync.
---
## Next Steps
Upload content via the API
How content is chunked and indexed