This page is best viewed while using uBlock Origin


No Login

NO LOGIN PATCH

Affinity is now 100% free — but it requires signing in with a Canva account. With this patch, skip the login and jump straight into editing!


These patches are made for the initial Affinity v3.0.1 build only. The patches will likely need some adjustments as new builds are pushed. Avoid updates until patches are updated if you want to continue skipping the login. And no... this does not unlock paid Canva AI. You can apply some of the ML addons though if you know what you're doing.

macOS

  1. Download and install Affinity
  2. Open Terminal, copy the code below -- hovering over the code displays a copy button in the right corner
  3. Paste the code into Terminal, hit Enter and wait for it to finish -- Affinity can now be used without logging in
    1
    2
    3
    4
    5
    6
    7
    8
    9
    affinity_magic() {
        local dylib="$1/Contents/Frameworks/liblibaffinity.dylib"
        local version=$(defaults read "$1/Contents/Info.plist" CFBundleShortVersionString 2>/dev/null || echo "")
        [[ "$version" == "3.0.1" ]] || { echo -e "\n\033[0;31mError: Expected v3.0.1, but found '$version'.\033[0m"; return 1; }
        perl -0777pi -e 's/\xE0\x00\x00\x54\x13\x00\x80\x52/\xE0\x00\x00\x54\x33\x00\x80\x52/; s/\xEC\x10\x31\xDB/\xEC\x10\xFF\xC0/;' "$dylib"
        codesign --force --sign - --deep "$1" 2>/dev/null
        /usr/bin/xattr -cr "$1" 2>/dev/null
        echo -e "\n\033[0;32mAffinity patched successfully! No login should be required.\033[0m"
    }; affinity_magic "/Applications/Affinity.app"
    

SIP ON users with Gatekeeper enabled may get a "Damaged" message after patching and attempting to launch the app -- do not trash the app! Open System Preferences/Settings → Security & Privacy → scroll all the way down and "Allow" the app to run.


Windows x64

  1. Download and install Affinity
  2. Open PowerShell w/admin privileges, copy the code below -- hovering over the code displays a copy button in the right corner
  3. Paste the code into PowerShell, hit Enter and wait for it to finish -- Affinity can now be used without logging in

Shout out and thanks to xanax for their work!

& {
    $f = 'C:\Program Files\Affinity\Affinity\libaffinity.dll'
    $b = [IO.File]::ReadAllBytes($f)
    $s = [byte[]]@(0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,
                   0x48,0x89,0x5C, 0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x0F)
    $r = [byte[]]@(0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,
                   0xB0,0x01,0xC3, 0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x0F)
    $w = 19..25
    $len = $s.Length
    for ($i = 0; $i -le $b.Length - $len; $i++) {
        $m = $true
        for ($j = 0; $j -lt $len -and $m; $j++) {
            if ($w -notcontains $j -and $b[$i+$j] -ne $s[$j]) { $m = $false }
        }
        if ($m) {
            for ($j = 0; $j -lt $len; $j++) {
                if ($w -notcontains $j) { $b[$i+$j] = $r[$j] }
            }
            [IO.File]::WriteAllBytes($f, $b)
            Write-Host "Patched at 0x$($i.ToString('X8'))" -ForegroundColor Cyan
            Write-Host 'Done. Patched successfully.' -ForegroundColor Green
            return
        }
    }
    Write-Host 'No match found.' -ForegroundColor Red
}

Windows Arm64

  1. Download and install Affinity
  2. Open PowerShell w/admin privileges, copy the code below -- hovering over the code displays a copy button in the right corner
  3. Paste the code into PowerShell, hit Enter and wait for it to finish -- Affinity can now be used without logging in
    & {
        $f = 'C:\Program Files\Affinity\Affinity\libaffinity.dll'
        $b = [IO.File]::ReadAllBytes($f)
        $s = [byte[]]@(0x00,0x00,0x80,0x52, 0xFD,0x7B,0xC2,0xA8, 0xF3,0x53,0xC1,0xA8, 0xC0,0x03,0x5F,0xD6, 0xF4,0xC9,0xF4,0xF4)
        $r = [byte[]]@(0x20,0x00,0x80,0x52, 0xFD,0x7B,0xC2,0xA8, 0xF3,0x53,0xC1,0xA8, 0xC0,0x03,0x5F,0xD6, 0xF4,0xC9,0xF4,0xF4)
        $w = @()
        $len = $s.Length
        for ($i = 0; $i -le $b.Length-$len; $i++) {
            $m = $true
            for ($j = 0; $j -lt $len -and $m; $j++) {
                if ($b[$i+$j] -ne $s[$j]) { $m = $false }
            }
            if ($m) {
                for ($j = 0; $j -lt $len; $j++) { $b[$i+$j] = $r[$j] }
                [IO.File]::WriteAllBytes($f, $b)
                Write-Host "Patched at 0x$($i.ToString('X8'))" -ForegroundColor Cyan
                Write-Host 'Done. Patched successfully.' -ForegroundColor Green
                return
            }
        }
        Write-Host 'No match found.' -ForegroundColor Red
    }
    

Linux

Affinity does not have native Linux support but community projects help make the process as seamless as possible.

Currently, Affinity on Linux does not require a "No Login Patch", the page which normally pops up asking you to login is "broken" and the app just opens normally! Patches will only be needed if this behavior changes in the future.

  1. Install Affinity
  2. Open the terminal, copy the code below -- hovering over the code displays a copy button in the right corner
  3. Paste the code into the terminal, hit Enter and wait for it to finish -- Affinity can now be used without logging in
    affinity_magic() {
      local backup="$1.$(date +'%Y%m%d-%H%M%S').bak"
      [[ -z "$1" ]] && { echo "Error: No file provided."; return 1; }
      [[ ! -f "$1" ]] && { echo "Error: File not found: $1"; return 1; }
      cp "$1" "$backup" || { echo "Error: Failed to backup."; return 1; }
      local output
      output=$(perl -0777pi -e '
        $n = s|\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\K\x48\x89\x5C(?=.{7}\x0F)|\xB0\x01\xC3|;
        print "$n";
      ' "$file" 2>/dev/null)
      local count="${output:-0}"
      [[ $count -gt 0 ]] && echo "Finished!" || { echo "No pattern found."; rm -f "$backup"; }
    }; affinity_magic "$set_Path_To_libaffinity_dll_Here"
    

Projects

  • AffinityOnLinux [fork]
  • affinity-nix
    • Due to Nix file permissions, the patch may need to be applied during the install process, inserting the command in the flake
  • affinity-everywhere
    • AppImages are pre-built "containers" and therefore cannot be directly patched


[✈️🔥]

Edit

Pub: 31 Oct 2025 20:35 UTC

Edit: 08 Nov 2025 13:38 UTC

Views: 515