File-based uploads in .netlify/blobs/deploy do not work

My site name is https://master--catchthemoment.netlify.app/

I put some blob files and metadata on .netlify/blobs/deploy. I can see those files in GitHub. I think the path is correct. Deploy is successful without any errors. But I cannot see those files in blobs.

Deployment Log

1:06:47 AM: build-image version: e5074bde24e53715f94c72a3902b7868fbfe84e1 (noble)
1:06:47 AM: buildbot version: e2595138a7c5ab9f292ccfa2932733582fe0dc65
1:06:47 AM: Fetching cached dependencies
1:06:47 AM: Starting to download cache of 280.9MB (Last modified: 2025-08-19 16:48:47 +0000 UTC)
1:06:48 AM: Finished downloading cache in 1.043s
1:06:48 AM: Starting to extract cache
1:06:51 AM: Finished extracting cache in 3.635s
1:06:51 AM: Finished fetching cache in 4.728s
1:06:51 AM: Starting to prepare the repo for build
1:06:52 AM: Preparing Git Reference refs/heads/master
1:06:53 AM: Custom publish path detected. Proceeding with the specified path: 'catchthemoment-app'
1:06:53 AM: Custom functions path detected. Proceeding with the specified path: 'catchthemoment-app-functions'
1:06:54 AM: Starting to install dependencies
1:06:54 AM: Started restoring cached python cache
1:06:54 AM: Finished restoring cached python cache
1:06:54 AM: Started restoring cached ruby cache
1:06:54 AM: Finished restoring cached ruby cache
1:06:54 AM: Started restoring cached go cache
1:06:55 AM: Finished restoring cached go cache
1:06:56 AM: v22.18.0 is already installed.
1:06:56 AM: Now using node v22.18.0 (npm v10.9.3)
1:06:56 AM: Enabling Node.js Corepack
1:06:56 AM: Started restoring cached build plugins
1:06:56 AM: Finished restoring cached build plugins
1:06:57 AM: Successfully installed dependencies
1:06:57 AM: Starting build script
1:06:57 AM: Detected 0 framework(s)
1:06:57 AM: Section completed: initializing
1:06:59 AM: ​
1:06:59 AM: Netlify Build                                                 
1:06:59 AM: ────────────────────────────────────────────────────────────────
1:06:59 AM: ​
1:06:59 AM: ❯ Version
1:06:59 AM:   @netlify/build 35.1.0
1:06:59 AM: ​
1:06:59 AM: ❯ Flags
1:06:59 AM:   accountId: 688a389d7082992a386fa685
1:06:59 AM:   baseRelDir: true
1:06:59 AM:   buildId: 68a4af23e89afa0009c6e9f0
1:06:59 AM:   deployId: 68a4af23e89afa0009c6e9f2
1:06:59 AM: ​
1:06:59 AM: ❯ Current directory
1:06:59 AM:   /opt/build/repo
1:06:59 AM: ​
1:06:59 AM: ❯ Config file
1:06:59 AM:   /opt/build/repo/netlify.toml
1:06:59 AM: ​
1:06:59 AM: ❯ Context
1:06:59 AM:   branch-deploy
1:06:59 AM: ​
1:06:59 AM: ❯ Installing extensions
1:06:59 AM:    - neon
1:07:00 AM: ​
1:07:00 AM: ❯ Loading extensions
1:07:00 AM:    - neon
1:07:01 AM: ​
1:07:01 AM: Functions bundling                                            
1:07:01 AM: ────────────────────────────────────────────────────────────────
1:07:01 AM: ​
1:07:01 AM: Packaging Functions from catchthemoment-app-functions directory:
1:07:01 AM:  - admin-get-key-info.mjs
1:07:01 AM:  - admin-manage-key.mjs
1:07:01 AM:  - backup-download-blob.mjs
1:07:01 AM:  - backup-get-keys.mjs
1:07:01 AM:  - backup-get-metadata.mjs
1:07:01 AM:  - check-key.mjs
1:07:01 AM:  - delete-blobs.mjs
1:07:01 AM:  - example-blobs.mjs
1:07:01 AM:  - generate-key.mjs
1:07:01 AM:  - get-audio.mjs
1:07:01 AM:  - list-customers.mjs
1:07:01 AM:  - list-keys.mjs
1:07:01 AM:  - sell-keys.mjs
1:07:01 AM:  - upload-audio.mjs
1:07:01 AM: ​
1:07:02 AM: ​
1:07:02 AM: (Functions bundling completed in 1.2s)
1:07:10 AM: ​
1:07:10 AM: Scanning for secrets in code and build output.                
1:07:10 AM: ────────────────────────────────────────────────────────────────
1:07:10 AM: ​
1:07:10 AM: Secrets scanning complete. 40173 file(s) scanned. No secrets detected in build output or repo code!
1:07:10 AM: ​
1:07:10 AM: (Secrets scanning completed in 8.1s)
1:07:10 AM: ​
1:07:10 AM: Deploy site                                                   
1:07:10 AM: ────────────────────────────────────────────────────────────────
1:07:10 AM: ​
1:07:10 AM: Starting to deploy site from 'catchthemoment-app'
1:07:10 AM: Calculating files to upload
1:07:11 AM: Starting post processing
1:07:11 AM: Post processing done
1:07:11 AM: Section completed: postprocessing
1:07:11 AM: Skipping form detection
1:07:11 AM: Post processing - header rules
1:07:11 AM: Post processing - redirect rules
1:07:12 AM: Site is live ✨
1:07:13 AM: 0 new file(s) to upload
1:07:13 AM: 0 new function(s) to upload
1:07:13 AM: Section completed: deploying
1:07:13 AM: Site deploy was successfully initiated
1:07:13 AM: ​
1:07:13 AM: (Deploy site completed in 2.3s)
1:07:13 AM: ​
1:07:13 AM: Netlify Build Complete                                        
1:07:13 AM: ────────────────────────────────────────────────────────────────
1:07:13 AM: ​
1:07:13 AM: (Netlify Build completed in 14.4s)
1:07:13 AM: Caching artifacts
1:07:13 AM: Started saving build plugins
1:07:14 AM: Finished saving build plugins
1:07:14 AM: Started saving bun cache
1:07:14 AM: Finished saving bun cache
1:07:14 AM: Started saving go cache
1:07:14 AM: Finished saving go cache
1:07:14 AM: Started saving python cache
1:07:14 AM: Finished saving python cache
1:07:14 AM: Started saving ruby cache
1:07:14 AM: Finished saving ruby cache
1:07:14 AM: Started saving emacs cask dependencies
1:07:14 AM: Finished saving emacs cask dependencies
1:07:14 AM: Started saving maven dependencies
1:07:15 AM: Finished saving maven dependencies
1:07:15 AM: Started saving boot dependencies
1:07:15 AM: Finished saving boot dependencies
1:07:15 AM: Started saving rust rustup cache
1:07:15 AM: Finished saving rust rustup cache
1:07:15 AM: Build script success
1:07:15 AM: Section completed: building
1:07:55 AM: Uploading Cache of size 280.6MB
1:07:57 AM: Section completed: cleanup
1:07:57 AM: Finished processing build request in 1m10.205s

I also try to “ls .netlify/blobs” in the build command, but this folder is empty.

This is my netlify.toml

# Base build settings that apply to all environments
[build]
  publish = "catchthemoment-app"
  functions = "catchthemoment-app-functions"

# Settings for the PRODUCTION environment
# This applies when you deploy to your main site URL
[context.production.functions."*"]
  netlify_blobs = ["audio-uploads"]

# Settings for DEPLOY PREVIEWS (your UAT environment)
# This applies to all pull/merge request previews
[context.deploy-preview.functions."*"]
  netlify_blobs = ["audio-uploads-uat"]

Do not know why it is not uploaded. I think Netlify does not even try to download it from GitHub.

This is invalid config. However, I could reproduce the issue, and I’ve filed it for the devs.

Thanks for your reply.

Could you please let me know what the problem is with my config? How can I fix it?

There’s no solution at the moment. Like I mentioned, I’ve filed it for the devs. Will let you know once they respond.

Have you tried using the Frameworks API for this: Frameworks API | Netlify Docs?

I know the API work. But I want to use File upload to restore the backup. I may have more than 10k files need to restore. I think file upload is easier and faster.

Does it has a way to backup and restore blobs file with metadata?

@hrishikesh Any update on this?

None yet, and given the schedules of the devs, I don’t anticipate any movement on this for the time being. This is a low-priority issue right now.