Skip to content

Instantly share code, notes, and snippets.

@dannote
Last active July 7, 2025 09:00
Show Gist options
  • Save dannote/17e0396fe2e19c6e60c915838376d267 to your computer and use it in GitHub Desktop.
Save dannote/17e0396fe2e19c6e60c915838376d267 to your computer and use it in GitHub Desktop.
Final Cut Pro X trial reset
#!/usr/bin/swift
// DISCLAIMER
// This script modifies an unencrypted file associated with the trial version of Final Cut Pro.
// Under the DMCA (17 U.S.C. § 1201), this modification does not qualify as circumvention of a technological
// protection measure (TPM), as it does not involve bypassing encryption, authentication, or similar protections.
// Distributing this code is therefore legal under the DMCA.
// This script is intended for educational and research purposes, such as exploring trial-related file structures,
// or for system troubleshooting in controlled environments with explicit permissions. It is not intended to be used
// in a manner that violates Apple's software license agreement.
// WARNING
// Using this script to reset or extend the trial period of Final Cut Pro without Apple's authorization likely violates
// the software license agreement. Such actions may lead to legal consequences. The responsibility for compliance with
// all applicable laws and agreements lies solely with the user. The author of this script assumes no liability for misuse
// or any resulting consequences.
import Foundation
let path = URL(fileURLWithPath: NSString(string: "~/Library/Containers/com.apple.FinalCutTrial/Data/Library/Application Support/.ffuserdata").expandingTildeInPath)
let data = try! NSData(contentsOf: path) as Data
let dictionary = try! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as! NSDictionary
let mutableDictionary = dictionary.mutableCopy() as! NSMutableDictionary
for (key, value) in mutableDictionary {
if value is NSDate {
mutableDictionary[key] = Date()
}
}
try! NSKeyedArchiver.archivedData(withRootObject: mutableDictionary, requiringSecureCoding: false).write(to: path)
print("You'd better buy it")
@santgodd
Copy link

works on Sequoia 15.2?

@elvischepin-github
Copy link

elvischepin-github commented Mar 4, 2025

For me what worked (just replace 'tom' to your username):
mv -v /Users/tom/Library/Containers/com.apple.FinalCutTrial/Data/Library/Application\ Support/.ffuserdata ~/.Trash/
Hope that helps.

Sequoia 15.3.1

@svikramajit
Copy link

For me what worked (just replace 'tom' to your username): mv -v /Users/tom/Library/Containers/com.apple.FinalCutTrial/Data/Library/Application\ Support/.ffuserdata ~/.Trash/ Hope that helps.

Sequoia 15.3.1

This worked for me. I couldn't find the "com.apple.FinalCutTrial" folder. So I searched for it in search bar. Multiple folders showed up. Somehow I managed to locate the ".ffuserdata" file and delete it. Trial has been reset. Thank you!

@TehBrian
Copy link

TehBrian commented Jun 5, 2025

Just a heads-up @elvischepin-github and @svikramajit, my gist at https://gist.github.com/TehBrian/bf82c7505b647d423da6d5abbe2b95a3 should work as well, and you won't need to modify it with your username.

@elvischepin-github
Copy link

Just a heads-up @elvischepin-github and @svikramajit, my gist at https://gist.github.com/TehBrian/bf82c7505b647d423da6d5abbe2b95a3 should work as well, and you won't need to modify it with your username.

Thank you!

@Marco-Huber-Opus
Copy link

Install FCPX trial Open terminal and run: crontab -e Add line: 0 0 */90 * * rm -rf ~/Library/Application\ Support/.ffuserdata Save in nano: CTRL + O, Enter, CTRL + X Save in vim: ESC, :wq, Enter Verify cronjob: crontab -l

Worked for me in july 25.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment