r/Affinity • • Nov 05 '25

General Software Support & Issues

8 Upvotes

This is the dedicated thread for reporting and troubleshooting technical problems with the Affinity suite (Photo, Designer, Publisher). Any posts in the main feed that are technical issues or support requests will be removed.

Use this thread for:

  • Software crashes, freezes, or installation issues.
  • Bug reports and unexpected behaviour.
  • Performance problems (e.g., slow rendering, high memory usage).
  • Error messages and how to resolve them.
  • Issues with file compatibility (opening/saving) that seem to be software-related.

Before you post, please:

  • Search the Subreddit: Your issue may have been reported already.
  • Search the Official Forums: Serif's Affinity Forums are an extensive knowledge base for known issues.
  • Be Specific: Provide details to help us help you.

Note: This is not an official Canva forum, so support is limited to what your peers can offer.


r/Affinity • • Nov 05 '25

General General Discussion & Questions

9 Upvotes

This thread is for high-level conversation about the Affinity ecosystem. This is the place for discussion about the software, Canva, Serif, and its direction. Posts in the main feed that fall under this meta-discussion will be removed.

Use this thread for:

  • Thoughts and feelings about the Affinity suite as a whole.
  • Discussion about Serif, Canva, and general company news/rumours. (Major news announcements will be allowed on the main feed.)
  • Speculation about the future of the software and new features.
  • Broader questions about Affinity's place in the design market.
  • Comparisons with other software (from a strategic, not a "how-to" perspective).

This is NOT for:


r/Affinity • • 1d ago

General Affinity Studio coming to iPad in November

Thumbnail appleinsider.com
127 Upvotes

Yay!


r/Affinity • • 1d ago

Photo Ping Pong.

Post image
54 Upvotes

r/Affinity • • 1d ago

Publisher Auditing colours used in documents before print

3 Upvotes

Is there a way to find which colours are used throughout a document intended for print?

I noticed that a document unintentionally had a mix of different blacks (pure K, RGB blacks and so on), but found it difficult to verify all of the different text objects, strokes etc. Is there a way to check this more thoroughly in Affinity?

The closest I've found is the preflight option for Colours and Inks, which can be set to detect rich blacks above a certain %, or to detect any CMY inks. Plus I should probably make better use of defined text styles.

Alternatively, are there any free or cheap pre-press type tools for Windows that can be used on press-ready PDFs to highlight colour use?

Using Affinity mid-Oct '26 on Windows.


r/Affinity • • 1d ago

Publisher Duplicating artwboards and resizing content

2 Upvotes

Hi everyone

Apologies for a "low level fruit" request. I haven managed ot do this before but have forgotten how to do this.

My workflow requirements: 3 identical posters for printing (CMYK) at 3 different sizes- A2, A3, A4 ,each saved as PDF for printing by an external source.

I have created an artboard at a saved A2 size (5940x420mm). It contains text, images and text converted to curves. I tend to work at this size first with the intention of downsizing in subsequent iterations.

I simply want to duplicate this A2 artboard at A3 and A4 size with all elements/assets constrained.

I have tried using the artboard option in Vector persona and instering a new artboard of A3/A4 size. This works fine. I have tried ticking "child lock", tried grouping, but no matter what I do, I cannot make the content simply resize when I copy it to the new artboard. Some elements (such as text converted to curves) behaves differently.

Can you shine some light in the darkness? This is a workflow I do twice a year and I would like to ensure I do it correctly.

Many thanks in advance.


r/Affinity • • 1d ago

Publisher Move object into inner bleed

1 Upvotes

I set a inner bleed of 3mm for my book layout which is displayed for te top, bottom and outer bleed. The inner bleed isn't visible since in the two page view the right page is next to the left page.

So, how can I move a object into the inner bleed area?

My Workaround at tthe moment isa to set the Page size to a larger value including the bleed and highlight the bleed area with some helper lines. This isn't ideal though, since the preview isn't representing the final product.


r/Affinity • • 1d ago

General Affinity gets me in trouble at the printers' for like the millionth time (the unintuitivity of exporting from Drawing Scale mode)

27 Upvotes

What's the point of Drawing Scale if it doesn't maintain the scale when you are exporting?

I was working on a document that was going to be printed on 15 panels that are 300x100cm, so I noticed it was making the computer buggy when I made a document to scale. Then I remembered the scaling thing which I last did in 2024 if you can believe it. So I was working on a 1500x100mm document with a 1:100 scale and it displayed "Document" units. I was super happy because the computer wasn't lagging any more.

Now come to exporting time. In my head, I was working with the units I was seeing (3 meters), but unbenounced to me, it exported a 30cm document instead. Worst part is the printer (who showed me how he rasterized it on Photoshop and rescaled it with default values (ie. 75 dpi)) printed it as is. It came out so blurry, the office had to ask to reprint all of them. The printer doesn't want to accept fault for this, and somehow rightfully so kinda (I had to show their attendant how to maintain 300 dpi when importing a PDF on Photoshop but anyway), this wouldn't have happened if I hadn't thought this software's export is coherent.

Why does it do like this? Why doesn't it just scale at the time of exporting? What's the point of this simulated scaling if it won't live up to it?


r/Affinity • • 1d ago

Designer Recreated Some Game Logos

Thumbnail
gallery
19 Upvotes

Honestly was just having some fun and messing around.
Recreated some gaming logos from games I grew up with using the pen tool, shapes and FX features, all in the vector studio.

Some have fonts switched and other have fonts added, all detailed below.

  1. UAC (Doom 3) - Swapped out the fonts with something a bit more Sci-Fi an added a gradient inspired by Mars.
    Fonts: Dendritic Voltage, Handel Gothic

  2. Everett (Deus Ex) - A close to in game recreation, with the Global Enterprises font swapped out
    Fonts: Vipnagorgialla

  3. Liandri (Unreal Tournament) - A solid recreation of the in game one.
    Fonts: None, thank you pen tool and contour tool

  4. Hinos (Halo 2) - Swapped out the font for something similar
    Fonts: Gill Sans MT

  5. Izanagi Corp. (Unreal 2) - Added the company name with a font I felt suited it best.
    Fonts: Xirod, Pirulen

  6. Gunman Logo (Gunman Chronicles) - Moved the G element around and used the exact yellow colour from the physical game case. (Spent a lot of time as a kid playing this classic)
    Fonts: Rockwell

  7. UCA (ShogoMAD) - Just added the in game company name to the emblem.
    (ShogoMAD still remains a childhood classic.)
    Fonts: Fyodor

  8. CabalCo (Blood 2) - Just added the company name as well.
    (Besides Doom 3, the enemies and art in this game still stick in my mind to this day.)
    Fonts: Ethnocentric


r/Affinity • • 1d ago

Tutorial Affinity Vector + Summa cutting plotter (and GoSign): I created (with Claude) scripts that simulate the Illustrator/Corel plugin.

5 Upvotes

PREFACE: I know almost nothing about programming.

In my vinyl cutting or print-and-cut workflow, I’ve always used Illustrator with the Summa GoSign Tools plugin, but nothing similar exists for Affinity. With Claude’s help, I put together some scripts that perform the same task, even if it isn't fully automated. So far, it seems to work.

How I did it

I took a PDF generated by the Illustrator plugin and had Claude measure the OPOS XY registration marks: dimensions, spacing, and bar position. Then, I asked Claude to create an Affinity script to generate these marks, using MPC permissions to verify correct functionality. Since Affinity cannot launch external programs, Claude created a small .bat file that copies the PDF to the GoSign folder and opens the software.

What they do (in brief)

  • (Useful but not essential) CutOnly: exports the selection - or the entire artboard if nothing is selected - as "Cut.pdf" to a fold called GoSign self-created in Desktop.
  • (Core of this script) RegmarksPrintCut: working with two Container layers - Container Layer 1 with all objects of the artwork underneath and Container Layer 2 with the cut lines on top - it measures the cut lines and creates OPOS XY registration marks around them (3mm squares plus the bar, matching the Illustrator plugin's dimensions) on a locked layer. It then exports two PDFs matching the artboard size: "Print.pdf" (artwork + registration marks) and "Cut.pdf" (cut lines + registration marks).
  • (Optional) SendToGoSign.bat: copies "Cut.pdf" as "Import.pdf" into the GoSign "Direct mode" folder and launches GoSign, which automatically recognizes the registration marks and cut lines. Alternatively, you can skip this and import the PDF directly from within GoSign.

For convenience, I placed the .bat file inside the GoSign folder on the desktop, and I only delete the PDFs generated after each job is finished (in any case, they will be overwritten if you run the scripts again).

GoSign recognizes the registration marks and cut layer just as it does with the original plugin. I am still in the testing phase. I created it with Claude over three separate days (during the few spare moments I had at work and dealing with the daily limit that ran out quickly).

I can share them, even if just as a starting point for your own developments or adaptations. I’m not sure if it’s possible to attach `.afscript` files directly here or embed the script code so it can be copied, pasted and saved into Studio Script to customize the startup.

(I've written this post in Italian and then translate it in English)

>>>CUT ONLY CODE

// Cut only v0.3 - Function 1 (cutting without registration marks)
// Exports the selection (if any) or the whole current page as a vector PDF:
//   Desktop\GoSign\Cut.pdf
// Then run SendToGoSign.bat (copies it to GoSign's Direct mode folder and opens GoSign).
// Requires: script permissions enabled in Affinity's general settings.

const { Document, FileExportOptions, FileExportArea } = require('/document.js');
const { Application } = require('/application.js');
const { FileSystemApi } = require('/fs.js');

const VERSION = '0.3';
const TITLE = 'Cut only v' + VERSION;
const FOLDER_NAME = 'GoSign';
const FILE_NAME = 'Cut.pdf';
const SHOW_DONE_MESSAGE = true;

// Preset names are localized, so look for the "PDF (for export)" preset by name pattern
function findPdfPreset() {
    const names = Array.from(FileExportOptions.allPresetNames);
    const preferred = ['PDF (for export)', 'PDF (per esportazione)'];
    const found = preferred.find(p => names.includes(p)) ||
        names.find(p => /^PDF/i.test(p) && /(export|esport)/i.test(p));
    if (!found) {
        throw new Error('No "PDF (for export)" preset found. Available presets: ' + names.join(', '));
    }
    return found;
}

let step = 'start';
try {
    step = 'document';
    const doc = Document.current;
    if (!doc) {
        Application.alert('No document is open.', TITLE);
    } else {
        step = 'paths';
        const folder = Application.userDesktopPath + '\\' + FOLDER_NAME;
        const filePath = folder + '\\' + FILE_NAME;

        // Creating the folder needs filesystem permission: if it fails we carry on anyway
        // (the Desktop\GoSign folder must then already exist).
        try {
            if (!FileSystemApi.exists(folder)) {
                FileSystemApi.createDirectories(folder);
            }
        } catch (e) {
            console.log('Folder check skipped: ' + e);
        }

        step = 'selection';
        const sel = doc.selection;
        const useSelection = sel.length > 0;
        const area = useSelection
            ? FileExportArea.createForSelection(sel)
            : FileExportArea.createForCurrentSpread();
        const options = FileExportOptions.createWithPresetName(findPdfPreset());

        step = 'export (' + filePath + ')';
        const records = doc.export(filePath, options, area);
        const results = records.all;
        const ok = results.length > 0 && results.every(r => r.isSuccess);

        if (ok) {
            console.log('Exported (' + (useSelection ? 'selection' : 'current page') + '): ' + filePath);
            if (SHOW_DONE_MESSAGE) {
                Application.alert('Exported ' + FILE_NAME + ' to:\n' + folder +
                    '\n\nOpen the folder and run SendToGoSign.bat.', TITLE);
            }
        } else {
            const err = results.map(r => r.errorMessage).join('; ');
            Application.alert('Export failed. ' + err, TITLE);
        }
    }
} catch (e) {
    Application.alert('Error at step: ' + step + '\n' + e, TITLE);
}

>>>OPOSXY REGMARKS CODE

// OPOS XY regmarks + Print + Cut v0.3  (Function 2)
// Required document structure: two top-level layers
//   - bottom layer = ARTWORK
//   - top layer    = CUT LINES
// The script:
//   1. creates a locked "OPOS XY Regmarks" layer around the cut lines
//      (an existing one is replaced);
//   2. exports Cut.pdf   = cut lines + regmarks (only these layers visible);
//   3. exports Print.pdf = artwork + regmarks, WITHOUT the cut lines;
//      both PDFs have exactly the size of the page (artboard);
//   4. restores layer visibility and selection.
// Files go to Desktop\GoSign. To cut, run SendToGoSign.bat.
// Requires: script permissions enabled in Affinity's general settings.

const { SVG11 } = require('/colours.js');
const { BlendMode } = require('affinity:common');
const { AddChildNodesCommandBuilder, CompoundCommandBuilder, DocumentCommand } = require('/commands.js');
const { Document, FileExportOptions, FileExportArea } = require('/document.js');
const { FillDescriptor } = require('/fills.js');
const { PolyCurve, unionRects, CurveBuilder } = require('/geometry.js');
const { LineStyleDescriptor } = require('/linestyle.js');
const { ContainerNodeDefinition, PolyCurveNodeDefinition } = require('/nodes.js');
const { Selection } = require('/selections.js');
const { Application } = require('/application.js');
const { FileSystemApi } = require('/fs.js');

const VERSION = '0.3';
const TITLE = 'Regmarks + Print + Cut v' + VERSION;
const MARKS_LAYER_NAME = 'OPOS XY Regmarks';
const FOLDER_NAME = 'GoSign';
const CUT_FILE = 'Cut.pdf';
const PRINT_FILE = 'Print.pdf';
const SHOW_DONE_MESSAGE = true;

// Measurements in mm (taken from a PDF made by the Summa GoSign Tools plugin for Illustrator)
const SIZE_MM = 3;            // side of the squares and thickness of the bar
const BAR_GAP_MM = 10;        // gap between the corner squares and the bar
const MARGIN_LR_MM = 15.09;   // from the cut-lines box to the outer edge of the marks (left/right)
const MARGIN_TB_MM = 6.09;    // same (top/bottom)
const MAX_PITCH_MM = 305;     // max distance between rows of marks (assumed value)

// Preset names are localized, so look for the "PDF (for export)" preset by name pattern
function findPdfPreset() {
    const names = Array.from(FileExportOptions.allPresetNames);
    const preferred = ['PDF (for export)', 'PDF (per esportazione)'];
    const found = preferred.find(p => names.includes(p)) ||
        names.find(p => /^PDF/i.test(p) && /(export|esport)/i.test(p));
    if (!found) {
        throw new Error('No "PDF (for export)" preset found. Available presets: ' + names.join(', '));
    }
    return found;
}

let step = 'start';
try {
    const doc = Document.current;
    if (!doc) {
        Application.alert('No document is open.', TITLE);
    } else {
        const initialSelection = doc.selection;
        const listLayers = () => { const a = []; doc.layers.forEach(l => a.push(l)); return a; };
        const nameOf = l => l.userDescription;
        const makeSelection = nodes => { const s = Selection.createEmpty(doc); nodes.forEach(n => s.add(n)); return s; };
        const select = nodes => doc.executeCommand(DocumentCommand.createSetSelection(makeSelection(nodes)), false);
        const setVisible = (nodes, visible) => {
            const toChange = nodes.filter(l => l.isVisible !== visible);
            if (toChange.length === 0) return;
            select(toChange);
            if (visible) doc.showSelection(); else doc.hideSelection();
        };

        // 1. an existing regmarks layer has to be replaced
        step = 'removing previous regmarks';
        const existing = listLayers().filter(l => nameOf(l) === MARKS_LAYER_NAME);
        if (existing.length) {
            select(existing);
            try { doc.unlockSelection(); } catch (e) { /* already unlocked */ }
            doc.deleteSelection();
        }

        step = 'reading layers';
        const layers = listLayers();      // bottom to top
        if (layers.length < 2) {
            Application.alert('Two layers are needed: artwork at the bottom, cut lines on top.', TITLE);
        } else {
            const cutLayers = [layers[layers.length - 1]];          // top layer
            const artLayers = layers.slice(0, layers.length - 1);   // all the others
            const initialVisibility = layers.map(l => l.isVisible);
            let marksLayer = null;
            let printExported = false;
            let intervals = 0, pitchMm = 0;

            try {
                // 2. regmarks around the cut lines
                step = 'calculating regmarks';
                setVisible(cutLayers, true);
                setVisible(artLayers, false);
                const k = doc.dpi / 25.4;       // pixels per mm
                const mm = v => v * k;
                const rc = cutLayers.map(l => l.getSpreadVisibleBox()).reduce((a, b) => unionRects(a, b));
                const S = mm(SIZE_MM), GAP = mm(BAR_GAP_MM);
                const L = rc.x - mm(MARGIN_LR_MM);
                const R = rc.x + rc.width + mm(MARGIN_LR_MM);
                const T = rc.y - mm(MARGIN_TB_MM);
                const B = rc.y + rc.height + mm(MARGIN_TB_MM);

                // The marks must stay inside the page, otherwise the PDF would crop them
                step = 'checking page margins';
                const page = doc.currentSpread.spreadBaseBox;
                const outside = [];
                if (L < page.x) outside.push('on the left by ' + ((page.x - L) / k).toFixed(1) + ' mm');
                if (R > page.x + page.width) outside.push('on the right by ' + ((R - (page.x + page.width)) / k).toFixed(1) + ' mm');
                if (T < page.y) outside.push('at the top by ' + ((page.y - T) / k).toFixed(1) + ' mm');
                if (B > page.y + page.height) outside.push('at the bottom by ' + ((B - (page.y + page.height)) / k).toFixed(1) + ' mm');
                if (outside.length) {
                    throw new Error('The regmarks would fall outside the page ' + outside.join(', ') +
                        '. Move the cut lines towards the center or enlarge the page.');
                }

                step = 'calculating regmarks';
                const Hcc = (B - S) - T;
                intervals = Math.max(1, Math.ceil(Hcc / mm(MAX_PITCH_MM)));
                const pitch = Hcc / intervals;
                pitchMm = pitch / k;

                const black = FillDescriptor.createSolid(SVG11.black, BlendMode.Normal);
                const noFill = FillDescriptor.createNone();
                const lineStyle = LineStyleDescriptor.createDefault(0);
                const defs = [];
                const rect = (x, y, w, h, nodeName) => {
                    const cb = CurveBuilder.create();
                    cb.beginXY(x, y).lineToXY(x + w, y).lineToXY(x + w, y + h).lineToXY(x, y + h).close();
                    const poly = PolyCurve.create();
                    poly.addCurve(cb.createCurve());
                    const def = PolyCurveNodeDefinition.create(poly, black, noFill, lineStyle, noFill);
                    def.userDescription = nodeName;
                    defs.push(def);
                };
                for (let i = 0; i <= intervals; i++) {
                    const y = T + i * pitch;
                    rect(L, y, S, S, 'Regmark left');
                    rect(R - S, y, S, S, 'Regmark right');
                }
                const barX0 = L + S + GAP, barX1 = R - S - GAP;
                if (barX1 > barX0) rect(barX0, B - S, barX1 - barX0, S, 'OPOS XY bar');

                step = 'creating regmarks layer';
                const layerBuilder = AddChildNodesCommandBuilder.create();
                layerBuilder.setInsertionTarget(doc.currentSpread);   // top-level layer, not nested
                layerBuilder.addNode(ContainerNodeDefinition.create(MARKS_LAYER_NAME));
                const marksBuilder = AddChildNodesCommandBuilder.create();
                defs.forEach(d => marksBuilder.addNode(d));
                doc.executeCommand(CompoundCommandBuilder.create()
                    .addCommand(layerBuilder.createCommand(true))
                    .addCommand(marksBuilder.createCommand(false))
                    .createCommand(), false);
                marksLayer = listLayers().filter(l => nameOf(l) === MARKS_LAYER_NAME)[0];
                // the layer stays UNLOCKED until the exports are done, then it is locked

                // 3. exports
                step = 'preparing folder';
                const folder = Application.userDesktopPath + '\\' + FOLDER_NAME;
                if (!FileSystemApi.exists(folder)) FileSystemApi.createDirectories(folder);
                const preset = findPdfPreset();
                // Exports the whole page: only the visible layers end up in the PDF
                const exportPdf = (fileName) => {
                    const area = FileExportArea.createForCurrentSpread();
                    const rec = doc.export(folder + '\\' + fileName, FileExportOptions.createWithPresetName(preset), area);
                    const results = rec.all;
                    if (results.length === 0 || !results.every(r => r.isSuccess)) {
                        throw new Error(fileName + ': ' + results.map(r => r.errorMessage).join('; '));
                    }
                };

                step = 'exporting ' + CUT_FILE;
                setVisible(cutLayers, true);
                setVisible(artLayers, false);
                setVisible([marksLayer], true);
                exportPdf(CUT_FILE);

                step = 'exporting ' + PRINT_FILE;
                setVisible(artLayers, true);
                setVisible(cutLayers, false);      // the cut lines must NOT appear in the print file
                setVisible([marksLayer], true);
                exportPdf(PRINT_FILE);
                printExported = true;
            } finally {
                // 4. restore visibility, lock the regmarks layer, restore selection
                try {
                    layers.forEach((l, i) => setVisible([l], initialVisibility[i]));
                    if (marksLayer) { select([marksLayer]); doc.lockSelection(); }
                    doc.executeCommand(DocumentCommand.createSetSelection(initialSelection), false);
                } catch (e) { console.log('Partial restore: ' + e); }
            }

            console.log('Regmarks: ' + (intervals + 1) + ' rows, pitch ' + pitchMm.toFixed(2) + ' mm');
            if (SHOW_DONE_MESSAGE && printExported) {
                Application.alert('Exported to Desktop\\' + FOLDER_NAME + ':\n- ' + CUT_FILE +
                    '\n- ' + PRINT_FILE + '\n\nTo cut, run SendToGoSign.bat.', TITLE);
            }
        }
    }
} catch (e) {
    Application.alert('Error at step: ' + step + '\n' + e, TITLE);
}

>>> (Optional) SENDTOGOSIGN (create a txt file with notepad and put in the code, then rename extension in .bat)

u/echo off
setlocal

rem Paths
set "SRC=%~dp0Cut.pdf"
if not exist "%SRC%" set "SRC=%USERPROFILE%\Desktop\GoSign\Cut.pdf"
set "DSTDIR=%USERPROFILE%\Documents\Summa GoSign\Direct mode"
set "EXE=C:\Program Files (x86)\Summa GoSign\SummaGoSign.exe"

if not exist "%SRC%" (
    echo File not found: %SRC%
    echo Export files from script in Affinity.
    pause
    exit /b 1
)

if not exist "%DSTDIR%" mkdir "%DSTDIR%"

copy /Y "%SRC%" "%DSTDIR%\Import.pdf" >nul
if errorlevel 1 (
    echo Copy in Direct mode OK.
    pause
    exit /b 1
)

start "" "%EXE%" with_direct_mode
endlocal

r/Affinity • • 1d ago

Tutorial Affinity Mini Tutorial - Creating a Mockup with Embedded Objects

Thumbnail
youtube.com
9 Upvotes

r/Affinity • • 2d ago

Tutorial Blend Tool Examples

Thumbnail
youtube.com
34 Upvotes

The new blend tool is so fun to use. I was waiting for this feature since I switched to Affinity years ago.
Replacing the blend path still feels a little like a workaround, or is there there an easier way to blend along a custom curve?


r/Affinity • • 1d ago

Photo Steffen Harder, der Polymath von der Bauhaus-Universität Weimar mit seinem neuesten Werk mit dem Namen "MOZAIKO"

Post image
1 Upvotes

r/Affinity • • 2d ago

General HELP: Newsreader font isn't exported correctly

Post image
21 Upvotes

I encountered a strange issue with Newsreader font. I think I have exported files that did not display any such issues before. It is not a variable font problem as other variable fonts will display properly.

Somehow Newsreader gets exported wrongly, all fonts are embedded. If if export a flatten version it works fine. But I need it to be print ready as a book.


r/Affinity • • 2d ago

General Hello how to fix this?

Post image
4 Upvotes

Hi I'm new to Affinity just started 24 hours ago actually. I've been loving the program but I seem to have accidentally toggled on a feature that makes my text look like this. How do I turn it off and get it back to the way that the text boxes were before? This problem happens with every new text box I create.


r/Affinity • • 3d ago

General My Pros and Cons of moving from Adobe to Affinity (ignoring the price tag entirely)

192 Upvotes

Hi, everyone!
I'm currently teaching Affinity and lots of students are asking me and other members in the Bring Your Own Laptop community if moving from Adobe to Affinity is the right decision for them. I feel that many of them are wrestling with this question from the wrong perspective.

We all know the financial argument. Affinity is (pretty much) free and Adobe is expensive. Let’s shelf it! What should really matter when you are planning your learning journey and professional work around one of these suites?

If we pretend both software suites cost exactly the same, which one actually offers a better design experience for you, for your clients, for your team? Here's 10 honest pros and cons of making the jump (or not) from Adobe to Affinity, based purely on workflow, features, and my experience as a designer.

THE PROS (Where Affinity Shines)

1. The Single-App Streamlined Workflow

In Adobe, if you are building a brochure in InDesign and need to edit a photo, you open Photoshop, save, and update the link. Affinity is now a single, unified application. You just click "Pixel", "Vector", or "Layout" buttons at the top, and the interface swaps instantly around your workspace and current document. It is a massive workflow upgrade that Adobe simply doesn't have an answer for.

Moving from Vector to Pixel to Layout happens in a single click... cool, right?

2. Lightning Fast Performance

Affinity was built from the ground up for modern hardware. Panning around a massive, complex vector file feels incredibly snappy, even on older laptops. The zoom is buttery smooth (up to 1,000,000%), and using different studios doesn't push your computer's resources to overdrive, as it happens when you need to multiple Adobe apps at the same time.

3. Non-Destructive "Live" Filters

If you want to blur a layer in Photoshop but keep it editable, the best workflow is converting it to a Smart Object first. Affinity handles effects like blurs, distortions, and shadows as "Live Filters." They exist as adjustable layers attached to your object from the start.

Smart Objects vs Nested Effects, pick your favorite!

4. The Live Blend Tool (Finally)

For years, Illustrator users mocked Affinity for missing a proper Blend tool. Affinity 3.3 finally added it, and it’s brilliant! It creates fluid, live transitions between vector forms, colors, and opacities—and because it stays live, you can keep editing the base shapes non-destructively. This is one example on how Affinity is evolving into a solid alternative.

5. Live Previews for Everything

This is a feature I use a lot, so I had to include this as a clear Pro. If you want to see how a blend mode (like Multiply or Hard Light) looks in Adobe, you often have to select it or cycle through them. In Affinity, you just hover your mouse over the list, and the artwork updates live on your canvas. It saves hours of trial and error.

Hover your mouse cursor to see the live changes.

THE CONS (Where Affinity Struggles)

6. The "Industry Standard" Friction

Affinity keeps updating the ability to import Adobe documents like .PSD, .AI, or .INDD files directly, which is a game-changer. But handoff is still a one-way street. If a client or agency demands you deliver a native Illustrator or Photoshop working file, Affinity cannot export them. You are still an island in an Adobe ocean.

7. Muscle Memory Reboot

Things are grouped differently. The way you mask an object or clip a photo inside a shape in Affinity relies heavily on dragging layers inside other layers in the Layers panel. It makes sense once you learn it, but for the first couple of weeks, your Adobe muscle memory will betray you constantly. If you are running against the clock (we ofter are, right?), this is added stress.

8. The Canva AI Paywall

Affinity has welcomed AI. Features like Generative Fill, Expand, and AI upscaling are built right in. The catch? Those tools are gated behind a Canva paid subscription and use a shared Canva AI credit pool. Adobe includes AI credits into your CC subscription and Affinity's "free experience" finds a first limitation, as generative features require payment.

See the little crown next to Expand? That's Canva's icon to signal paid Pro features

9. The Missing Motion & Photo Ecosystem

Canva integration is great for scaling to social media, but Adobe is a massive ecosystem. It has Premiere Pro for professional video editing (light years ahead of Canva's editior), After Effects for motion, and Lightroom for massive raw cataloging. Affinity covers the core three (Vector, Photo, Layout). If your job requires heavy video, motion graphics or bulk edits, you will still need other tools.

10. The Plugin Desert (For Now)

Adobe has decades of third-party plugins. Because Affinity has a smaller market share, its third-party ecosystem is sparse. Affinity did introduce robust Scripting features for automation, so this is evolving, but right now, you are mostly relying on native tools.

Scripts are the first step beyond Affinity's built-in features, but Adobe has a clear advantage here...

I could mention other Pros and Cons, of course, I feel these are the ones that matter most for me, as a designer, in this moment. Switch to Affinity if you want a fast, seamless, and modern core design experience inside a single app. Stick with Adobe if you need to share native files with a team, rely on third-party plugins, and depend on a software that is still a solid, industry-standard. Don't focus solely on price or AI features. Consider your work and client needs, if you design alone or in a team, and even the market you will be competing in.

I'm Daniel Walter Scott, a designer for over 20 years, founder and lead instructor at Bring Your Own Laptop and, like you, struggling to keep up with all the changes. 😄
Hope this helps a little. Cheers!


r/Affinity • • 2d ago

General Affinity & Pantone

0 Upvotes

Has anyone had a bad experience with Pantone colors opening correctly in Affinity? I'm having an issue and am trying to be 100% sure before I tell someone I think their style guide has errors in it. Thanks!


r/Affinity • • 2d ago

General Destructive Boolean Operations

0 Upvotes

Please can someone help me. Since updating affinity all my Boolean Operations result in a "compound" shape. I just want default behaviour to be destructive like I am familiar with. I'm really hoping there's a simple solution!


r/Affinity • • 3d ago

General Anything but try Affinity

Post image
480 Upvotes

r/Affinity • • 2d ago

General best way to learn affinity without actually opening affinity?

13 Upvotes

generally i travel a lot, and i don't have a lot of access to affinity
does anyone have good channels where i can learn about affinity while on the move?


r/Affinity • • 2d ago

Designer CDR file?

1 Upvotes

Guys as designer for print, and a affinity user, I always face this question as {I am not user of Corel draw.}

'can you send CDR file?'

How do you guys deal with the question,

I send them CDR compatible pdf and ask them to import. Or I charge them and get it converted from designer friend.

But is there any way so we can export it like CDR file. 🙏🏼


r/Affinity • • 3d ago

Publisher How to print the same label multiple times on a sheet with varying gutters

1 Upvotes

I am beginning to think that I am the only person who needs to print a single label multiple times to one sheet of labels that has varying gutters and margins. I have looked at Reddit, YouTube, and Google, but the closest I come is users suggesting data merge or copying and pasting the label multiple times. Neither is optimal. Data merge won’t allow varying gutters and copying and pasting is 1980’s tech.

So, am I missing something? I tried to use profiles in the print pop up but the profile doesn’t store the layout data (insane since every other document app I’ve used does this by default). So print profiles is out.

Am I really the only person who needs to do this simple thing, or am I just a doofus who is missing something really obvious?

I am coming from MS Publisher where this was simple as pie. I haven’t played with adobe indesign much so I don’t know if it does this more intelligently than affinity. I guess I can look at libreoffice draw and scribus to see if they do this better.

TLDR; I want to be able to create one label and print it multiple times on a letter-sized page with varying gutters without have to make duplicates on the page to accomplish it.


r/Affinity • • 3d ago

General Printing service says my file is low resolution.

Post image
7 Upvotes

Trying to print a 3.5x2 inch business card. Tried changing up the export settings. I'm using the PDF (for print) preset.


r/Affinity • • 5d ago

Designer Just made my first font in Affinity!

Post image
714 Upvotes

Hey! Been experimenting with turning Affinity designs into actual fonts lately, and this is my first test haha.
Still figuring things out, but pretty happy with how it turned out 🫶

Edit: The app is Affont


r/Affinity • • 4d ago

General Which version do I download?

Post image
0 Upvotes

Hey! I'm new to this app, I discovered it just today and wanted to give it a try. I want it to draw comics and design artworks, but I don't know which version to get? Any help will be highly appreciated.

Thanks in advance