Contents›

Reference

Bulk Rename

Bulk Rename builds a new file name by assembling parts you specify: literal text, a field in the file’s catalog entry, custom data or number sequence. The preview shows every resulting name before anything is written. Undo puts the names back.

The Bulk Rename window

Start here

  1. Filter or select the files you want to rename.
  2. Open Bulk Rename and stack the parts of the new name, top to bottom.
  3. Read First new name, then the preview. A row that is not OK will not be renamed.
  4. Click Rename N Files. Undo is there if the result is wrong.

What changes, and what stays

Bulk Rename changes file names on disk, for many videos at once. Each file stays in the folder it is already in.

The catalog remembers the previous name as Original File Name, so a search for the old name can still find the file.

Title is the name you see in the library, and it is separate from the file name. If Title still matches the file name, Skagway updates Title to the new file name. A Title you set yourself stays.

Characters a file name cannot hold are rewritten as the name is built. A slash, backslash, colon, asterisk, question mark, quote, or vertical bar does not survive. A × becomes x. A name longer than 255 bytes is shortened to fit. A leading dot is removed, so the file does not become hidden.

Choose the files

File → Bulk Rename… renames every video in the current view. Search and filters count. If the window still shows the whole library, that is the set.

Select the videos first, then right-click → Bulk Rename…, to rename only that selection. A command on one selected clip applies to every selected clip.

The line under the window title names the set, for example “12 filtered videos · Preview before applying.” Nothing is written until you click Rename N Files.

How the window is laid out

The window opens with three parts already filled in: Title, a dot, and Extension. For a file named IMG_2044.mov whose Title is Harbor, First new name reads Harbor.mov. Change the parts, or add to them. The window can be resized.

New name is the stack of parts, in order from top to bottom. The last row is blank. Choose a type there, or start typing, and that row becomes a part. A new blank row appears under it. On each part, the arrows move it earlier or later, and the trash button removes it.

The columns are Type, Parameters, Case, and Sample. Sample is that part’s piece of the first file. A dash means the part adds nothing for that file. Rest the pointer on the dash to see why.

First new name is the whole new name of the first file in the preview, with the name it has now underneath. It updates while you edit. If that first file would be skipped, the reason is under the name.

Preview lists every file: Current File Name, New File Name, and Status. Sort, above the list, sets the order of the list, the order of the numbers, and the order of the rename. File Name, ascending, is the default. A file with no value for the chosen field sorts last.

The parts

A new name is a stack of parts. Skagway joins them in order. You do not type a pattern string.

Text is characters you type: a word, a hyphen, the dot before the extension.

A field inserts something Skagway already knows. The Type menu groups those fields as Identity, Media, Library, and Custom. Custom is there when this library has custom fields.

Number counts through the files in preview order.

If taken adds text only when the new name is already taken. When the name is free, that part adds nothing.

Examples

Each example is a whole recipe. The Sample column is the first file. Build the same parts, in the same order, and the preview should match the results.

Example 1

Title, then the extension

This is the recipe the window opens with. The catalog title replaces the camera’s file name. The extension stays.

TypeParametersSample
TitleWhole valueHarbor
Text..
ExtensionWhole valuemov
NowNew nameWhy
IMG_2044.movHarbor.movTitle is Harbor
IMG_2090.movMarket.movTitle is Market

Example 2

A number, in the order of the preview

Add a Number part when every file should get its own place in one sequence. Sort is File Name, ascending, so IMG_2044 comes before IMG_2045. The number does not restart when the title changes.

TypeParametersSample
TitleWhole valueHarbor
Text--
Number0101
Text..
ExtensionWhole valuemov
NowNew nameWhy
IMG_2044.movHarbor-01.movFirst in the list
IMG_2045.movHarbor-02.movSame title, next number
IMG_2090.movMarket-03.movThe sequence continues

Type 1 and the names are Harbor-1.mov, Harbor-2.mov, Harbor-3.mov. Type 001 and the names stay three digits. The digits you type are both the starting number and the width. 015 continues 016, 017.

Change Sort when the sequence should follow something else. Date Created, ascending, numbers the oldest file first. Number, If taken, Today’s date, and Random id are not in the Sort menu, because the rename creates them.

Example 3

Leave a unique name alone

Use If taken when a repeated name needs a suffix and a unique name should stay clean. The three boxes are the text before the number, the number, and the text after the number. Here the before box is a hyphen, the number is 1, and the after box is empty.

TypeParametersSample
TitleWhole valueHarbor
If taken- 1 (nothing after)-1
Text..
ExtensionWhole valuemov
NowNew nameWhy
IMG_2044.movHarbor-1.movTwo files would both be Harbor.mov
IMG_2045.movHarbor-2.movThe next free number
IMG_2090.movMarket.movMarket is unique, so If taken adds nothing

Sample shows the first file. Here that file is one of the Harbors, so If taken shows -1. Market is later in the list, and its If taken part is empty. A dash in Sample means that part adds nothing for the first file. It does not mean the part is unused for the rest of the list.

It also fills in when a file already in that folder has the new name, and that file is not one of the files being renamed away. Two results in the same folder still have to be different. If they are not, the preview says Collision and those rows are skipped.

Put text after the number when you want it only on a collision. Before empty, number 1, after a hyphen, between the text City- and the text city, turns City-city.mp4 into City-1-city.mp4 and City-2-city.mp4. A file that does not collide stays City-city.mp4.

Example 4

Today’s date and the old name

TypeParametersSample
Today's dateyyyy-MM-dd2026-11-01
Text--
Name without extensionWhole valueinterview
Text..
ExtensionWhole valuemp4
NowNew nameWhy
interview.mp42026-11-01-interview.mp4The date is the day you rename

Example 5

Keep only the text after a separator

Name without extension, with Keep set to After the first and the separator set to space-hyphen-space. The first time that separator appears is the cut. A later hyphen stays in the kept text. A file with no such separator keeps its whole name.

TypeParametersSample
Name without extensionAfter the first “ - ”Take 2
Text..
ExtensionWhole valuemov
NowNew nameWhy
Interview - Take 2.movTake 2.movText after the first “ - ”
Interview.movInterview.movNo separator, so the whole name stays

Before the first, with the same separator, keeps Interview and drops the rest.

Example 6

A blank date does not leave a stray hyphen

An empty field adds nothing. A short separator just before it is left out too. The separator has to be one to three characters, and only spaces, hyphens, underscores, or dots. Title, then -, then Last Played, then a dot and Extension:

NowNew nameWhy
Harbor.movHarbor-2026-11-01.movPlayed on that day
Market.movMarket.movNever played, so the hyphen is left out

A hyphen that is part of a longer text part stays. The text Topic- is not a separator, so an empty field after it still leaves Topic- in the name.

Fields you can insert

On a field, Keep is Whole value, Before the first, or After the first. Case is at the end of the row. A Format box appears for dates and for Duration.

NameDescriptionExamples
Identity
Name without extensionThe file name, with the extension taken off.interview
TitleThe name in the library. It can already differ from the file name.Harbor
File NameThe current file name, extension included.IMG_2044.mov
Original File NameThe name from before the last rename Skagway recorded.IMG_2044.mov
ExtensionThe extension, with no dot. A Text part of “.” in front of it supplies the dot.mov
Parent FolderThe folder the file is in.Wedding
VolumeThe disk name. A file on the startup disk comes through as a hyphen.Archive
PathThe full path. Slashes become hyphens.Users-alex-Movies-Wedding-IMG_2044.mov
Database IDThe library’s number for that video.1842
Media
DurationThe length, written so it can sit in a file name. A format changes it.1h02m03s, or 90 with mmm
WidthThe picture width in pixels.1920
HeightThe picture height in pixels.1080
ResolutionWidth and height. The × becomes an x.1920 x 1080
QualityThe size label Skagway uses for filters.1080p
CodecThe codec stored for the file.H.264
Frame RateFrames per second.23.976
File Size (bytes)The size in bytes.48234496
SubtitlesWhat kind of subtitles Skagway found.None, Sidecar, Burned-in
Library
RatingThe star count. Unrated is 0, and 0 is still written.4
TagsThe tag names. A bar between tags becomes a hyphen.city-night
PlaysHow many times the video has been played.3
Date ImportedWhen the video entered this library.2026-03-14
Date CreatedThe file’s creation date, when it has one.2024-06-02
Last PlayedWhen it was last played. Blank until then.2026-11-01
Content FingerprintThe long id used to spot duplicates.e3b0c44298fc1c14
Resume PositionWhere playback will resume, in seconds.90
UnplayableWhether this Mac can play the file.true
Missing FileWhether the file is missing from disk.false
DuplicateWhether the file is in a duplicate group.false
Date ConvertedWhen a playable copy was made.2026-10-02
Today's dateThe day of the rename.2026-11-01
Random idEight characters, different for each file. A new preview can show a different id. The id in the preview you rename from is the one written.3f9a1c2b
Custom
Your fieldsEach custom field in this library, under its own name. A date field has a Format box. A blank value is left out.Acme, or 2026-04-01

Numbers and names already taken

Number steps once per file, in the preview’s current order. The first file gets the number you typed. 1 goes 1, 2, 3. 01 goes 01, 02, 03. 015 goes 015, 016, 017.

If taken is three boxes: text before the number, the number, and text after the number. The new part starts as a hyphen, then 1, then an empty after box. Clear the hyphen if you do not want it. The number box uses the same width rule as Number, so 01 is 01, 02, 03.

The whole If taken part is empty when the new name is free. It is filled in when two files in this batch would land on the same name in the same folder, or when some other file already in that folder already has the name.

Without If taken, a repeated result is a Collision. Those rows stay as they are. Rename N Files does not include them. Add If taken, or change the parts, until the preview no longer says Collision.

Dates, duration, and case

Today's date, Date Created, Date Imported, the date last played, and Date Converted take a format. Leave it empty and the date is yyyy-MM-dd, such as 2026-11-01. MMM-yyyy is Nov-2026. The letters are the usual date pattern: yyyy is the year, MM is the month number, MMM is the short month name, dd is the day.

Duration with an empty format is a length that is safe in a file name: 1h02m03s, 12m34s, or 45s. mmm is the total minutes. sss is the total seconds. hhh is the total hours. hh, mm, and ss are the hours, minutes, and seconds of the clock time, not the totals. A 90-minute video is 1h30m00s, or 90 with mmm.

Case applies to a field after any cut. As written leaves the text alone. lowercase and UPPERCASE change all of it. Title Case capitalizes each word, The Quick Brown Fox. Name case capitalizes the first letter only, The quick brown fox.

Before and after a separator

Keep has three choices. Whole value uses the field as it is. Before the first keeps the text before the first time the separator appears. After the first keeps the text after that, and a later copy of the separator stays.

The separator is the exact characters you type, including spaces. For City-roll-a, Before the first - is City. After the first - is roll-a. If the separator is not in the value, the whole value is kept.

The cut happens before Case. Title Case still applies to the piece you kept.

When a field is empty

An empty field adds nothing. A short separator sitting just before it is left out as well, so the name does not pick up a dangling hyphen. The separator has to be one, two, or three characters long, and every character has to be a space, a hyphen, an underscore, or a dot.

Text that is longer than that is a real part of the name. Topic- stays even when the next field is empty. So does a word with a hyphen inside it.

The same rule is why the opening recipe does not become .mov when Title is empty. The dot is a one-character separator in front of Extension, and it is left out with the empty Title. The new name is then only the extension. Use Name without extension when Title might be empty.

Read the preview

The status line under the list is the count, such as “8 will rename · 1 warning · 2 skipped · 3 unchanged.” Rename N Files uses the “will rename” count. Skipped and unchanged rows are left on disk as they are.

OK means the row will be renamed. No extension means it will still be renamed, and the new name has no extension. That is usually a missing Extension part, or a dot that was left out with an empty field.

Unchanged means the new name is the name the file already has. Empty name means the parts added up to nothing. Collision means two files in the same folder would get the same name.

Click a row to open the same three facts larger: the current name, the new name, and the status.

Rename, then undo

Click Rename N Files only after the preview is the list you want. The window stays open. A finished file says Renamed. A file that failed says why: it is missing, a file with that name is already in the folder, a move of that file is still in progress, or macOS refused the name. The status line reads “N files renamed.” or “N files renamed · N failed.”

The main button becomes Done, which closes the window. Retry Failed is there when some files failed. It tries those files again and leaves the ones that already succeeded.

Undo, on the status line, puts the names back. It shows its own progress, then lists the same files again, ready to rename, as they were when the window opened.

After Done, the activity strip at the bottom of the library keeps “N files renamed · Undo” until you undo or run another rename. A later scan does not push that line off. Edit → Undo Rename does the same thing. ⌘Z is Undo Rename while that line is waiting. When it is not, ⌘Z is still Undo Reconnect.

Undo is one step, not a stack. It restores the names from this rename. A file whose name you changed again after that is left as it is.

While a rename is running, each file briefly has a temporary name and then the new name. If Skagway quits in the middle, the next launch puts that file back to the name it had before the rename.

Templates

The menu at the right of New name is Templates, or the name of the template that matches the parts you have now.

Save As Template… asks for a name. Choosing that template later fills the parts in again.

Saving under a name you already used replaces that template. Delete Template removes one.