Video summary
A viewer named Bruce reached out to discuss a frustratingly slow performance issue with his Mac Passwords app, noting that while the same iCloud-synced passwords function perfectly on his iPhone and another Mac, his specific 2019 Intel MacBook Pro experiences significant lag every time he opens the application. Although disabling iCloud syncing temporarily improves speed, the problem returns immediately upon re-enabling it, suggesting that the issue lies within local database corruption or bloat rather than a simple network sync delay. The host explains that this is a common scenario where Apple's software fails to automatically clean up old synchronization records or optimize indexes, leading to databases that grow inefficiently over time and require manual intervention to restore performance.
To diagnose and resolve the issue, the recommended approach involves identifying the specific SQLite database files responsible for storing password data, which are typically located within the user's Library container at a path like `com.apple.passwords/data`. The host demonstrates how to use Activity Monitor on macOS to find these files by checking the "Open Files" tab while the application is running, as this list reveals exactly which databases the app is accessing. Once identified, users can employ tools like SQLite browsers or third-party applications such as Base (available via Setapp) to inspect the database structure and delete unnecessary sync records or orphaned data that Apple's system does not automatically remove.
However, proceeding with manual database edits carries inherent risks, particularly because iCloud syncing involves multiple layers of databases including local copies and remote sync files. If a user accidentally deletes critical data or breaks the database structure before properly managing the sync state, they could potentially lose all their passwords or cause the system to repopulate the local database with corrupted data from iCloud. Therefore, the most crucial step before attempting any cleanup is to export all passwords to a secure file and create full backups of the relevant library folders. This precaution ensures that even if the manual optimization process causes unintended side effects, the user can easily restore their password vault without permanent data loss.
Ultimately, the solution often involves a combination of cleaning up obsolete entries—such as passwords for websites that no longer exist—and potentially exploring lower-level interactions with Keychain Access to understand how the Passwords app wraps around system keychains. While hardware limitations like older Intel processors or spinning hard drives might contribute to slowness, the primary culprit in these cases is frequently the accumulation of unmanaged sync records within the SQLite database. By carefully inspecting the database files, removing redundant entries, and maintaining rigorous backup habits, users can significantly improve the responsiveness of their password management app without relying on guesswork or risking data integrity.
Read the full video transcript
Bruce, actually different Bruce, but
Bruce says, "Hi Dave, ET, and Al.
In a recent podcast, you shared about
your final success in getting your
contacts database to respond by
well, by disconnecting from iCloud,
deleting a bloated database, and then
reconnecting. The end result being a
vastly improved speed with that app. I
have a similar situation going on with
my Mac password app, which is to say, it
is glacially slow each time I open it to
access passwords. The same iCloud synced
passwords work fine on a different Mac
and on my phone. That's an interesting
clue.
Uh if I turn off passwords in iCloud, it
gets a bit faster, but as soon as I turn
it back on, we're back to very slow. I'm
wondering if you know what the
corresponding database or other files to
delete would be in this scenario. Or if
I were to ask Claude what the accurate
question prompt would be. He's got a
2019 MacBook Pro 16-in Intel, and he is
an active MacCast listener or MGG
listener, sorry, he might be a MacCast
listener,
uh since episode 1, but listening to MGG
since episode 1, and a happy premium
customer. Thank you so much for that,
Bruce. So,
>> So, um
a good question, obviously. Um
and but this is
as with a lot of this stuff, it's one of
those, you know, be careful, don't get
caught scenarios, obviously. Mucking
about
with
somebody else's databases where they
haven't published any documentation can
be rough. Uh and that's why my solution
path for the contacts thing was what it
was, right? Where I let it be the thing
to clear out all of its old sync
records, which it turns out it did when
I turned off
pass or
contact syncing in iCloud and turned it
back on.
And we've had others confirm the same
thing. It seems like at least for you,
whatever needs to be cleared out isn't
really being cleared out by that with
the passwords database. Um
the way I got here with my
contacts database is I pointed Claude
code at my um contacts folder. I think I
actually just pointed it at my my
library folder. I I think that's where I
and sent it on its way and I I think it
went and searched online to find out
what my contacts database was and and
then it went and interrogated those
databases because they're just sequel
light databases and and found all these
extra, you know, sync records in there
and and
and then we had a conversation about
what to do about these things, right?
So, I would suggest doing something
similar.
However, um there is a trick to figuring
out which database an app uses uh when
it is open. And uh I
did this just now. I didn't really think
about it when we were prepping this
question, but that's okay. We'll do it
in real time. I opened my passwords app
on my Mac and then I opened Activity
Monitor. And in Activity Monitor, I
double-clicked on passwords and I went
to the open files and ports tab. I
scrolled all the way down to the bottom
because this tab uh fills up it it is
updated in real time
and the things at it is in the most
recently opened at the bottom list,
right? So, it is oldest to newest. So,
if you look at this for any given app,
you'll see like you know, where
what the files it looked at when it
start first opened the app and then the
files that it's looking at at the
bottom. And in the Passwords app, it's
pretty obvious from kind of looking at
this, and I've done this a lot. So, when
I say it's pretty obvious, I say it's
pretty obvious to me after having done
this countless times over, you know, a
decade or more.
Uh it's pretty obvious to me that these
things are stored in home library
containers
com.apple.passwords/data.
Uh because I know what SQLite databases
look like, and they are there for
certain. They may be elsewhere. Uh
but you could just and and this this
list and maybe this is one of those
quick tips buried inside. This list is
copyable. You can just click in the
inside the list. You won't see anything,
and then do a select all, and it selects
everything in the list. So, you could
just paste that into Claude code and uh
tell it what to do. But you you want to
point it there. It will probably agree
with this, and they are SQLite
databases. So, you could have Claude
interrogate them.
I would make backups before you do this.
>> What could go wrong?
>> I know I said it once already. Uh I'll
say it a third time. Please make backups
before you do this. I don't know that we
can overstate that. But but that's
that's where I would look, and that's
how I would go about solving this.
That's how I went about solving it with
contacts at least to a degree. So, um
but those SQLite databases uh Apple has
proven that they do not do
cleanup on they don't write their own
software to do
all the cleanup that can be done on
these databases to make them more
efficient. They don't write all the
indexes for these databases that could
make them more efficient.
I don't know why that that this is the
case. Clearly, there are many of us that
suffer from this, and I would assume
that Apple engineers would at least some
of Apple's engineers would be in the
group of people that are suffering from
these databases that have gotten large
over time, and yet they still haven't
done this. But, they haven't done it.
So, it's up to us to find other ways to
go about doing these things. Um
The The thing where you want to be most
careful is that this is syncing. So,
there is another
The way iCloud syncing works is
generally speaking, and I can't say this
for sure with passwords, but it's been
true with other things like calendars.
There is your calendars database.
There is your contacts database. Uh And
then, there is the iCloud sync database,
which is stored elsewhere on the
computer. And I believe notes also does
this, but I could be wrong.
So,
it might wind up repopulating your
passwords database with that which was
in the iCloud database. Or,
it might wind up repopulating what's in
the iCloud data- the local copy of the
iCloud database with what's in the
passwords database, and then that might
get pushed up to iCloud. [clears throat]
So, if you wind up deleting something or
breaking the database, you might wind up
with no passwords. That's something you
want to avoid. So, I I would think that
that would be my advice is, you know,
work hard to avoid that. Um You can
export
>> my question? What could possibly go
wrong?
>> Yeah, exactly. Well, I mean,
you know, the the the list is endless,
but, you know, file In the passwords
app, go to file, export all passwords to
file would be the place I would start
this process.
>> Yeah.
>> Any Any thoughts from
either of you?
>> Uh
>> [sighs and gasps]
>> He The one thing he mentioned that it
was mostly going slow on this one
machine.
And then, he did note that the machine
was a 2019
Intel
MacBook Pro.
So, I don't know what the RAM
configuration on that is, but I I I
wonder too if it's just an overly large
password database, especially if he
imported passwords from something else
like a one password or LastPass or
whatever was being used. And if just a
simple go through and clean up like old
password data
might help cuz, you know, this is
another one those areas of our lives
where
>> [laughter]
>> you have that website that you put a
password in from, you know,
2006 and it doesn't even exist anymore.
Or, you know, like
>> Yep.
>> you got 50,000 passwords in your
password database and you don't need
50,000 passwords anymore.
>> Yeah.
Yeah, I could see that
working.
Yeah.
I mean
>> know, I'm just wondering if it's slow
cuz that's an old machine. It's still
Intel. It's probably got a spinning
drive. You know, it's like
>> all the things.
>> other factors that
are causing it to be slow just on that
one machine.
>> I am
You You may be right. I I I and and I'm
certainly crazy. Uh however,
I it's in scenarios like that where I
have
almost defaulted to
But, we have the mode of But, we have
the ability to know the answer. We don't
have to guess. Right? And And And in
this scenario, what that means is we can
I mean, you could go yourself and look
at the passwords database, right? It is
a SQLite database. You can browse it
with a SQLite browser. I I presume. I
haven't tried it. I I'm I know there's
some security in there. I don't know how
it's secure, you know, but I'm sure
there is.
So, uh
or you can have Claude do it.
>> Right.
>> Right? And so, like
I don't know I I guess if I go back to
the the the
digging that I did with the contacts
database,
I made a lot of assumptions. I thought I
had too many contacts. I cleaned out a
bunch. Didn't make any difference,
right? And that's when I started heading
down this path of like, "Okay, well,
what is it really?" And that's when
Claude was like, "Oh, no, you don't have
too many contacts. You just have
hundreds of thousands of sync records."
And I was like, "Well, I never would
have stumbled onto that if I didn't look
in the SQL light database. And even if I
had, I'm not sure I would have known
what I was seeing. You know, so like
that that's that's one of those I don't
know. It you know, in any given you but
you may well be right that there's some
limit of the passwords database.
>> Uh Kiwi Bruce also points out I was
under this impression as well.
>> [laughter]
>> Did Kiwi Graham change his name to Kiwi
Bruce? If so, I love I applaud you so
much.
>> In the Discord chat, it's hilarious.
>> [laughter]
>> Exactly. Uh but I was just going to I
was just going to play along, but
and not really point it out. But uh
he said presumably uh password is based
on keychains, and I'm pretty sure it's a
it's a new wrapper around uh keychain
access. And I even went to launch
keychain access, and it popped up a
dialogue and said, "Use the new
passwords." So, I think there is an
interplay or some sort of relation
between those two things, too.
So, maybe worth exploring something
related to keychain access at a lower
you know, being at a low lower level.
>> Yep.
>> closer to the metal. So, that might be
another avenue to explore.
>> Yep.
Yep.
Yeah.
>> Yeah.
>> Fun. Yeah, I'd be curious I now I'm
curious what's in those SQL light
databases for passwords. Like, what is
it
if it if it's still really just using
whatever the system keychain or the
keychains in general were, you know, in
their as their as its storage, what how,
you know, what's what else is it
storing?
>> Well, I will once again then recommend
the application base, which you can get
if you have Setapp for free, which will
open SQLite databases and you can just
look at them.
>> Yeah.