Ruby: FrozenError: can't modify frozen String: "abc"
You tried to change an object that's frozen — string literals under # frozen_string_literal: true, constants, symbols or frozen hashes.
FrozenError: can't modify frozen String: "abc"FrozenError (can't modify frozen String)can't modify frozen Hashcan't modify frozen ArrayFrozenError: can't modify frozen object Meaning
Use non-mutating methods (+, dup, String.new, gsub instead of gsub!), or unfreeze with +"text"/dup. Rails freezes some options/params; copy with dup before changing. Ruby 3.4 warns about mutating string literals.
Common causes
# frozen_string_literal: truewith<<orgsub!- Modifying a constant (
CONST << x) - Mutating a frozen hash (
params.freeze) - Ruby 3.4 chilled strings
- Gems returning frozen objects
⚡ Quick fix
s = +"text"ors = "text".dupthen mutate- Prefer
s += "x" - Use
String.newfor buffers
Detailed fix by platform
Ruby
buffer = String.new; buffer << "a"
How to diagnose
- Object — Frozen why?
- Method — Mutating bang?
- Fix — dup?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- ArgumentError: missing keyword / unknown keyword Ruby: ArgumentError: missing keyword: :name / unknown keyword: :nmae
- ArgumentError: wrong number of arguments (given 1, expected 2) Ruby: ArgumentError: wrong number of arguments (given 1, expected 2..3)
- Bundler could not find compatible versions for gem Bundler: Bundler could not find compatible versions for gem "activesupport": In Gemfile: rails (= 7.1.0) depends on activesupport (= 7.1.0)
Most viewed in Ruby / Rails
- ActiveRecord::PendingMigrationError Rails: ActiveRecord::PendingMigrationError — Migrations are pending. To resolve this issue, run: bin/rails db:migrate
- ActionController::InvalidAuthenticityToken Rails: ActionController::InvalidAuthenticityToken (Can't verify CSRF token authenticity)
- undefined method for nil Ruby: NoMethodError: undefined method `x' for nil (nil:NilClass)
Other ways to find it
Where this error sits
Origin: Application & API. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 5 Nov 2026