Back to Nodes

Binary to URL

Last updated Jan 14, 2026

n8n community node for creating temporary URLs for binary files within workflow execution

4 Weekly Downloads
172 Monthly Downloads

Included Nodes

Binary to URL

Description

Binary to URL – n8n Community Node

Create temporary URLs for binary files within n8n workflow execution.

The simplest way to share binary files in n8n workflows – No S3, no MinIO, no configuration required. Just install and use!

![npm version](https://www.npmjs.com/package/n8n-nodes-binary-to-url)
![License: MIT](https://opensource.org/licenses/MIT)

Video Tutorials

  • YouTube: 告别 S3/MinIO!n8n 史上最简单的 Binary to URL 方案
  • 哔哩哔哩: 告别 S3/MinIO!n8n 史上最简单的 Binary to URL 方案
  • Use Cases

  • API Callback URLs: Send temporary file URLs to external APIs for processing
  • Email Attachments: Include temporary download links in emails
  • Batch Processing: Convert multiple files to URLs for parallel processing
  • Workflow-Internal Sharing: Pass binary data between workflow nodes
  • Temporary Preview: Generate preview URLs for images or documents
  • Testing & Prototyping: Quick file sharing without setting up storage services
  • How It Works

    Binary Data → Binary to URL Node → Temporary URL → Auto-Deleted after TTL
    

    1. Upload binary data to in-memory storage
    2. Get a temporary URL (valid for TTL seconds)
    3. Share URL with external services or users
    4. File automatically deleted when TTL expires

    Important Notice

    This node is designed for temporary URL sharing within workflow execution, NOT for long-term file storage.

  • ❌ NOT a file storage service
  • ❌ NOT for long-term URL sharing
  • ✅ FOR temporary URL passing between workflow nodes
  • ✅ FOR short-term external access (minutes to hours)
  • ✅ FOR workflow-internal binary data handling
  • Files are stored in memory and automatically deleted after expiration (TTL).

    Features

  • In-Memory Storage – Store files temporarily in n8n memory
  • Temporary URLs – Create short-lived URLs for binary data
  • Zero Configuration – No setup required
  • Automatic Cleanup – Files expire automatically via TTL
  • Cache Management – Built-in LRU cache with limits
  • Workflow Isolation – Each workflow has isolated storage
  • Secure File Keys – Cryptographically secure file key generation
  • Installation

    npm install n8n-nodes-binary-to-url
    

    Then restart n8n:

    If using npm

    n8n restart

    If using Docker

    docker-compose restart n8n

    If using systemd

    sudo systemctl restart n8n

    Quick Start

    1. Add a Binary to URL node to your workflow
    2. Connect to a node with binary data (e.g., HTTP Request)
    3. Configure:
    Binary Property: data (default) – name of binary property containing the file
    TTL (Seconds): 600 (10 minutes) – how long the file remains accessible
    4. Execute the workflow

    Output:

    {
      "fileKey": "550e8400-e29b-41d4-a716-446655440000",
      "proxyUrl": "http://127.0.0.1:5678/webhook/xxx/file?fileKey=550e8400-e29b-41d4-a716-446655440000",
      "contentType": "image/jpeg",
      "fileSize": 245678
    }
    

    Usage Examples

    Example 1: Send URL to External API

    1. HTTP Request (download image)
    2. Binary to URL (TTL: 300)
    3. HTTP Request (send proxyUrl to external API)
    

    Example 2: Temporary Email Attachment

    1. Generate PDF report
    2. Binary to URL (TTL: 600)
    3. Send Email (use proxyUrl as attachment link)
    

    Example 3: Batch Processing

    1. Read Binary Files
    2. Split In Batches
    3. Binary to URL (TTL: 300)
    4. HTTP Request (send proxyUrl to API)
    

    Configuration

    Parameters

    | Parameter | Type | Default | Description |
    |———–|——|———|————-|
    | Binary Property | string | data | Name of binary property containing the file to upload |
    | TTL (Seconds) | number | 600 | How long the file remains accessible (60-604800 seconds) |

    Storage Limits

    | Limit | Value |
    |——-|——-|
    | Max file size | 100 MB |
    | Max cache per workflow | 100 MB |
    | Global max cache | 500 MB |
    | Min TTL | 60 seconds (1 minute) |
    | Max TTL | 604800 seconds (7 days) |

    Recommended TTL

  • 60-300s (1-5 min): Workflow-internal use
  • 300-600s (5-10 min): Short-term processing
  • 600-3600s (10-60 min): Longer operations
  • Supported File Types

    | Category | Types |
    |———-|——-|
    | Images | JPEG, PNG, GIF, WebP, SVG, BMP, TIFF, AVIF |
    | Videos | MP4, WebM, MOV, AVI, MKV |
    | Audio | MP3, WAV, OGG, FLAC |
    | Documents | PDF, ZIP, RAR, 7Z, TXT, CSV, JSON, XML, XLSX, DOCX |

    Workflow Requirements

    Active or Public Workflow

    The Webhook URL will only work when the workflow is Active or Public:

  • Active workflow: Manually activate the workflow in n8n UI
  • Public workflow: Set as Public (static workflow), no activation needed
  • The webhook route is registered when the workflow is active or published as public.

    TTL-Based Lifecycle

    File Upload → URL generated → File accessible for TTL seconds → Auto-deleted → URL returns 404
    

    Files are automatically deleted when TTL expires. No manual cleanup required.

    Performance Best Practices

    Optimal TTL Settings

    | Use Case | Recommended TTL | Reason |
    |———-|—————–|——–|
    | Workflow-internal data passing | 60-120s | Fast cleanup, minimal memory usage |
    | API callback URLs | 300-600s | Balance between availability and cleanup |
    | Email attachments | 600-1800s | Give recipients enough time to access |
    | Batch processing | 300-600s | Short enough for cleanup, long enough for processing |

    Memory Optimization Tips

  • Use shorter TTL values for high-frequency workflows
  • Monitor cache usage with getStats() method in custom code
  • Avoid large files for temporary use (prefer <10MB when possible)
  • Files auto-expire: No manual cleanup needed, TTL handles everything
  • Concurrency Considerations

  • Each workflow has isolated storage (no cross-workflow conflicts)
  • Upload operations are serialized per workflow (automatic locking)
  • Multiple workflows can upload simultaneously without interference
  • Security Considerations

    File Key Security

  • File keys are generated using randomUUID() (cryptographically secure)
  • Keys are unpredictable and cannot be guessed
  • URLs expire automatically after TTL
  • Access Control

  • Workflow-level isolation: Files are only accessible within the same workflow
  • No authentication required: URLs are public but temporary
  • No access logging: Consider adding logging if audit trails are needed
  • Best Practices

  • Never store sensitive data: Use this for temporary files only
  • Use appropriate TTL: Shorter TTL = lower security risk
  • Monitor usage: Check cache stats regularly in production
  • Comparison: Binary to URL vs S3/MinIO

    | Feature | Binary to URL | S3/MinIO |
    |———|—————|———-|
    | Setup | Zero configuration | Requires server setup |
    | Storage | In-memory (ephemeral) | Persistent disk storage |
    | Deployment | Install npm package | Deploy and configure server |
    | Cost | Free (uses n8n memory) | Server/storage costs |
    | Use Case | Temporary URLs (minutes-hours) | Long-term file storage |
    | Persistence | Files expire automatically | Files persist indefinitely |
    | Scalability | Limited by n8n memory | Highly scalable |
    | Complexity | Very simple | Complex setup required |
    | Best For | Workflow-internal temporary sharing | Production file storage |

    When to use Binary to URL:

  • ✅ Temporary file sharing within workflow execution
  • ✅ Quick prototyping and testing
  • ✅ Simple use cases without long-term storage needs
  • ✅ When you don’t want to manage external services
  • When to use S3/MinIO:

  • ✅ Long-term file storage
  • ✅ Production environments with high traffic
  • ✅ Files that need to persist beyond workflow execution
  • ✅ When you need advanced features (CDN, access control, etc.)
  • FAQ

    General Questions

    Q: Can I use this for permanent file storage?
    A: No. This node is designed for temporary file sharing only. Files are stored in memory and automatically deleted after TTL expires. For permanent storage, use S3, MinIO, or similar services.

    Q: What happens to files when n8n restarts?
    A: All files are lost because they are stored in memory. This is expected behavior for a temporary storage solution.

    Q: Can multiple workflows access the same file?
    A: No. Each workflow has isolated storage. Files uploaded by one workflow cannot be accessed by another workflow.

    Q: Is there a way to extend the TTL of an existing file?
    A: No. Once uploaded, the TTL is fixed. If you need longer access, upload the file again with a longer TTL.

    Q: What happens if the cache is full?
    A: The oldest files are automatically deleted to make space for new uploads. This is handled by the built-in LRU cache mechanism.

    Technical Questions

    Q: How are file keys generated?
    A: File keys are generated using randomUUID(), which provides cryptographically secure random values. This makes keys unpredictable and secure.

    Q: Can I upload files larger than 100 MB?
    A: No. The maximum file size is 100 MB to prevent excessive memory usage. For larger files, consider using S3 or MinIO.

    Q: Does this node work with n8n Cloud?
    A: Yes. The node works with any n8n installation (self-hosted or cloud), but remember that files are stored in memory and will be lost if the instance restarts.

    Q: Can I use this in a production environment?
    A: Yes, but be aware of the limitations:

  • Files are stored in memory (limited by n8n’s available RAM)
  • Files are lost on n8n restart
  • No persistence or backup
  • Best suited for temporary use cases only
  • Integration Questions

    Q: Can I use this with the HTTP Request node?
    A: Yes. You can download files with HTTP Request, then use Binary to URL to create a temporary URL, and finally send that URL to another API.

    Q: Can I use this with the Send Email node?
    A: Yes. Create a temporary URL for your file and include it as a link in your email body.

    Q: Can I use this with the Webhook node?
    A: Yes. You can receive files via Webhook, convert them to URLs, and pass them to other nodes in your workflow.

    Troubleshooting

    Node not visible

    1. Check installation: npm list n8n-nodes-binary-to-url
    2. Restart n8n (most common issue)
    3. Refresh browser page

    File URL returns 404

  • Ensure workflow is Active or Public
  • Check if file expired (TTL passed)
  • Verify fileKey is correct
  • Try uploading again
  • Cache full

  • Wait for files to expire (TTL-based)
  • Reduce TTL for faster cleanup
  • Increase cache size in source code if you have more RAM
  • Memory usage high

  • Reduce TTL to expire files faster
  • Reduce MAXCACHESIZE in source code
  • Use shorter TTL values
  • Testing

    Create a test workflow:

    1. Manual Trigger node
    2. HTTP Request node: GET https://picsum.photos/200/300, Response Format: File
    3. Binary to URL node: TTL: 600
    4. Save and activate the workflow (or set as Public)
    5. Execute and copy the proxyUrl
    6. Open in browser to verify

    Expected result: Image displays in browser.

    Links

  • Technical Documentation: TECHNICAL.md
  • Repository: https://cnb.cool/ksxh-wwrs/n8n-nodes-binary-to-url
  • n8n Community: https://community.n8n.io

License

MIT