Tutorials 16 min read

Your Note's Created Date Is a Lie Waiting to Happen

MMNMNOTE
file-timestampsmetadatactimemtimebirthtimefrontmatterplain-textnote-takinglocal-first

The "Date created" your file manager shows is not a fact about your note. It is metadata the operating system keeps about the file, and a plain copy, a sync, or a backup restore can reset it to today without warning. If you sort by it, you trust a number the system owns. Write the date inside the file instead.

This is not a bug. It is what the timestamp was designed to mean. A volunteer moderator on Microsoft's Q&A forum put it plainly: "Date Created does not mean the Date you created the content. It means the date the file was first created on a given volume."1

The forum threads where people discover this carry titles like "Creation Date and Dataview Dates are reset after copying/syncing :(".2 The fix is small and durable: keep the date as a line of text in the note, where it travels with the words.

This post explains the footgun in concrete terms — how to read every timestamp, why a copy resets them, the three mistakes that cause the surprise, and where the date should actually live. The villain is not any app. It is the habit of trusting a fragile timestamp as your single source of truth.

What the dates actually mean

Every file carries up to four timestamps, and only one tracks creation. On Unix they are atime (last read), mtime (last content change), ctime (last status change), and a birth time set when the file is first written. The catch hides in ctime — it looks like "created" but means something else entirely.3

The confusion is almost always ctime. People see the "c" and read "created." It means changed. The Linux kernel manual is explicit: ctime "is changed by writing or by setting inode information (i.e., owner, group, link count, mode, etc.)"3 — the last time the inode's metadata was touched, not the file's creation.

macOS draws the same line in its own documentation. ATTR_CMN_CHGTIME is "the time that the file system object's attributes were last modified," while the true creation time is a separate attribute, ATTR_CMN_CRTIME, "the time that the file system object was created."4

The four timestamps, in one place:

TimestampWhat it recordsResets when
atime (access)The file was last readSomething reads the file
mtime (modify)The file's contents last changedYou edit and save
ctime (change)The inode metadata last changedPermissions, rename, or a write
birth (btime / crtime)The file was first created on this volumeA new file is written

Birth time is the fragile one

Birth time is the timestamp closest to what you mean by "created," and the least reliable to count on. On Linux the classic stat call does not return it — you must request it through the newer statx call with the STATX_BTIME flag. The one date that means "created" is the one tools are least likely to keep.3 5

The Linux manual marks birth time "(not returned in the stat structure)" and describes it as "The file's creation timestamp. This is set on file creation and not changed subsequently."3 The statx flag to request it is documented simply as "Want stx_btime."5

That opt-in design matters. Birth time is optional and filesystem-dependent — the kernel "may fail to return fields that were requested, depending on what the backing filesystem supports."5 Some filesystems record it; some do not. So the one timestamp that comes closest to a real creation date is the one a tool is least likely to preserve, and the one your filesystem might not store at all.

On macOS, stat does expose it. The command surfaces "the birth time of the inode" alongside access, modify, and inode-change times.6 That makes macOS a good place to see the footgun — which the next section does, with a live demonstration.

See the reset for yourself

Run a few commands and a plain copy rewrites every date. On macOS, create a file, copy it normally, then copy it again with timestamp preservation, and read the dates back. The plain copy stamps a brand-new birth, modify, and change time. The "preserve" copy keeps modify and birth, yet the change time still moves — the kernel stamps it.

echo "hello" > note.md
stat -f 'name=%N birth=%SB mtime=%Sm ctime=%Sc' note.md
# name=note.md birth=Jun 26 22:32:26 mtime=Jun 26 22:32:26 ctime=Jun 26 22:32:26

cp note.md note-copy.md          # a plain copy
stat -f 'name=%N birth=%SB mtime=%Sm ctime=%Sc' note-copy.md
# name=note-copy.md birth=Jun 26 22:32:27 mtime=Jun 26 22:32:27 ctime=Jun 26 22:32:27

cp -p note.md note-pcopy.md      # "preserve" copy
stat -f 'name=%N birth=%SB mtime=%Sm ctime=%Sc' note-pcopy.md
# name=note-pcopy.md birth=Jun 26 22:32:26 mtime=Jun 26 22:32:26 ctime=Jun 26 22:32:27

The original was created at 22:32:26. The plain copy reads 22:32:27 on all three — the original date is gone. The cp -p copy keeps the original modify and birth time, but its change time still jumps to 22:32:27, because no system call sets ctime directly; the kernel always stamps it on any write.7 Multiply that one second by a folder of a thousand notes copied during a migration, and every "date created" now reads the day you migrated.

Why a copy, a sync, or a restore rewrites the date

A copy does not move your file — it writes a new one. The new file gets a fresh birth and modify time, because to the system it is new. Windows File Explorer resets "Date created" on a cross-volume copy; a default cp does the same. A sync client downloads a fresh copy on the second device, with today's date.

Tools can opt back in, but it is always opt-in. The same moderator notes you "will need to use a tool such as RoboCopy or FastCopy to keep the original Date created when copying to another volume."1 On Linux, rsync preserves modification time only with --times (-t); to also carry the creation time you need a separate flag, "--crtimes, -N preserve create times (newness)."8 The behavior of common operations:

OperationEffect on dates
Default cp (macOS/Linux)New birth, modify, and change time — all set to now
cp -p (preserve)Keeps modify and birth; change time still updates; birth not guaranteed across filesystems
rsync -t (--times)Carries modification time only
rsync -N (--crtimes)Opts in to also carry create time
Windows Explorer copy to another volumeResets "Date created" to now
robocopy /DCOPY:T · TeraCopy · FastCopyPreserve the original timestamps

The pattern is consistent across every system: preserving the date is the exception you have to ask for, and the cloud-sync GUI most people actually use rarely exposes the option. That is precisely why the date you control should not live in metadata at all.

Common mistakes

Three assumptions cause almost every "why did my note dates reset" surprise: that ctime means "created," that a copy keeps the date, and that sync preserves it. Each is reasonable, and each is wrong in the same way — it shows up only after a migration, when every note suddenly reads today's date.

Put the date inside the file

The durable fix is to stop relying on metadata and write the date as text in the note. A written date is part of the file's contents, so it survives every copy, sync, and restore — the operations that rewrite a timestamp leave it untouched. The date you control belongs in the file, not in metadata the system owns.

One Obsidian practitioner reached the same conclusion after the reset bit them: "include a cdate (or similar) field in the note's front matter and just direct the Dataview query against that."10

There are two good homes for the date — and they complement each other.

The first is YAML frontmatter, a small block of key: value lines at the top of the file. Put created: and updated: there and every tool that reads the note can sort by them, because the date is now content — not metadata. The mechanics of frontmatter are their own topic; see how YAML frontmatter adds structure without a database for the full pattern.

---
created: 2026-06-26
updated: 2026-06-26
---

# Meeting notes

The second home is the filename. A note named 2026-06-26-meeting-notes.md carries its date in a form that survives any copy and sorts correctly in any file listing, on any system. That is a deliberate practice in its own right — see how to name your note files so you can still find them in 20 years. Frontmatter is the queryable home; the filename is the at-a-glance one. Use either, or both.

This is the deeper logic behind keeping notes as plain Markdown files on your own device, as MNMNOTE does: when the note is a file you own, the meaningful facts about it — including when — can live inside the file, where no system controls them and no copy can rewrite them.

An honest caveat

Filesystem dates are not useless. They are genuinely helpful day to day — "recent files," "sort by modified," and the quick scan of what you touched this morning all rely on them, and they work fine for that. The argument here is narrower and more honest than "never trust timestamps."

The rule is simply this: do not rely on a filesystem timestamp as your single source of truth for when something happened. Let the OS keep its working dates for convenience. Keep the date that matters as text you own, inside the file, so that when a copy or a sync inevitably rewrites the metadata, the real answer is still right there in the note.

Frequently asked questions

These are the questions people search when their note dates surprise them — what each timestamp means, why a copy or a sync rewrites it, and how to read or preserve the real one. The short version runs through every one: the date you can trust is the date you wrote into the file.

Does copying a file change the date created?

Usually yes. A default copy writes a new file, so it gets a new birth time and a new modify time set to the moment of the copy. Windows Explorer resets "Date created" when copying across volumes. Only opt-in tools — cp -p, rsync --crtimes, robocopy /DCOPY:T, TeraCopy, FastCopy — carry the original date over.

What is the difference between mtime, ctime, and birthtime?

mtime is the last time the file's contents changed. ctime is the last time the inode's metadata changed — permissions, ownership, a rename, or a write — not the creation time. Birth time (btime, or crtime on macOS) is when the file was first created. atime, a fourth timestamp, records the last read.

Is ctime the creation date?

No. On Unix systems, ctime stands for change time, not create time. The Linux manual defines it as the last status change, "changed by writing or by setting inode information."3 macOS labels the equivalent field as when attributes "were last modified."4 Windows NTFS keeps a separate true creation timestamp, but the Unix ctime is not it.

Why did my note dates reset after a sync?

Because the sync wrote a fresh copy on the second device, and to the operating system a fresh copy is a new file with a new date. Most sync clients do not preserve the original creation time, so every synced note can show the sync date. Writing the date into the file's frontmatter or filename avoids this entirely.

How do I read all four timestamps?

On macOS, stat -x note.md shows access, modify, change, and birth times. On Linux, stat note.md shows access, modify, and change; for birth time you need stat --format=%w or a statx-based tool, and only on filesystems that record it.5 6

How do I keep the date created when copying files on Windows?

File Explorer resets it, so use a tool that preserves timestamps: robocopy /DCOPY:T from the command line, or a GUI like TeraCopy or FastCopy configured to replace Explorer's copy function.1 More durably, write the date into the file itself so no copy tool can lose it.

A file's metadata belongs to the system that holds it; the file's contents belong to you. Write the date where you can still read it after the metadata is gone — and the next migration becomes a non-event.

This builds on Steph Ango's "file over app" idea — that "the files you create are more important than the tools you use to create them."11


To keep the date among the things that last, it lives in a file you own at mnmnote.com.

Footnotes

  1. Les Ferch, Volunteer Moderator, "File Explorer and Date created/modified change when…," Microsoft Q&A, https://learn.microsoft.com/en-us/answers/questions/4062372/file-explorer-and-date-created-modified-change-whe. Accessed 2026-06-26. 2 3

  2. "Creation Date and Dataview Dates are reset after copying/syncing :(," Obsidian Forum, https://forum.obsidian.md/t/creation-date-and-dataview-dates-are-reset-after-copying-syncing/88565. Accessed 2026-06-26.

  3. "inode(7) — Linux manual page" (man-pages 6.x), Michael Kerrisk / man7.org, https://man7.org/linux/man-pages/man7/inode.7.html. Accessed 2026-06-26. 2 3 4 5 6

  4. "getattrlist(2) — macOS manual page" (ATTR_CMN_CRTIME, ATTR_CMN_CHGTIME), Apple, https://manp.gs/mac/2/getattrlist. Accessed 2026-06-26. 2 3

  5. "statx(2) — Linux manual page" (man-pages 6.x), man7.org, https://man7.org/linux/man-pages/man2/statx.2.html. Accessed 2026-06-26. 2 3 4

  6. "stat(1) — macOS manual page," ss64.com, https://ss64.com/mac/stat.html. Accessed 2026-06-26. 2

  7. "utimensat(2) — Linux manual page" (man-pages 6.x), man7.org, https://man7.org/linux/man-pages/man2/utimensat.2.html. Accessed 2026-06-26. 2

  8. "rsync(1) — Linux manual page," man7.org, https://man7.org/linux/man-pages/man1/rsync.1.html. Accessed 2026-06-26.

  9. "Preserve Creation Dates when Using Obsidian Sync," Obsidian Forum, https://forum.obsidian.md/t/preserve-creation-dates-when-using-obsidian-sync/24818. Accessed 2026-06-26.

  10. Ojisan Seiuchi, "Obsidian file creation date debacle and a solution," 2023-05-30, https://www.ojisanseiuchi.com/2023/05/30/obsidian-file-creation-date-debacle-and-a-solution/. Accessed 2026-06-26.

  11. Steph Ango, "File over app," 2023-07-01, https://stephango.com/file-over-app. Accessed 2026-06-26.