[Verse 1]
The words sit heavy on my tongue,
A battle waged but never won.
I see the hurt within your eyes,
Yet pride keeps me from compromise.
[Pre-Chorus]
It’s not the love that slipped away,
But every wrong choice I made.
Still, saying sorry feels so hard to say…
[Chorus]
It’s hard to say I’m sorry, though it’s true,
Every moment lost was meant for you.
I let my walls build higher than they should,
Now I’m drowning in regret, misunderstood.
Hard to say I’m sorry, but I’ll try—for you.
[Verse 2]
Each step I take feels heavier still,
Haunted by choices born of will.
Your silence screams what words can’t mend,
And yet my voice refuses to bend.
[Pre-Chorus]
My heart is breaking, though it hides,
Beneath these scars where truth resides.
Forgiveness waits, but fear holds sway,
Making "sorry" harder than I thought to say.
[Chorus]
It’s hard to say I’m sorry, though it’s true,
Every moment lost was meant for you.
I let my walls build higher than they should,
Now I’m drowning in regret, misunderstood.
Hard to say I’m sorry, but I’ll try—for you.
[Bridge]
If time could heal the wounds I’ve caused,
I’d beg its mercy, no matter the cost.
But actions speak when words fall short,
So here I am, ready to make this effort.
[Verse 3]
The nights grow colder without your touch,
Each lonely star reminds me much—
Of all I took, of all I gave,
And how one word might bridge the grave.
[Pre-Chorus]
No shield protects me from the pain,
Love lingers fragile through the rain.
This time, I’ll find the strength somehow,
To lay my heart bare and bow.
[Chorus]
It’s hard to say I’m sorry, though it’s true,
Every moment lost was meant for you.
I let my walls build higher than they should,
Now I’m drowning in regret, misunderstood.
Hard to say I’m sorry, but I’ll try—for you.
[Outro]
So here I stand, stripped of disguise,
With trembling lips and tear-filled eyes.
Hard to say I’m sorry, yes, it’s true,
But losing you would be harder to do.