Argument reference
The tables below list every available argument grouped by category.
The user interface applies different defaults for some settings. The wizard defaults to fixed canvas mode, reload enabled, and auto-binary enabled. The CLI defaults to dynamic grid mode, reload disabled, and auto-binary disabled. When moving from the wizard to the CLI, specify these flags explicitly to match the wizard behavior.
Input and output
| Argument | Description | Default |
|---|---|---|
--prjPath PATH
|
Path to QV PRJ folder or ZIP file. Also accepts PRJ zip archives. | — |
--qvw PATH
|
Path to QVW or QVF file. Required in single-project mode. | — |
--generatePrj
|
Auto-generate PRJ folders from QVW files before conversion | Off |
--outputDir FOLDER
|
Output root directory. QV2QS creates a subfolder named after the project automatically. Required. | — |
Batch mode
| Argument | Description | Default |
|---|---|---|
--batchDir FOLDER
|
Scan one or more folders recursively for QVW and PRJ pairs. Separate multiple folders with ;. |
— |
--batchWorkers N
|
Maximum concurrent conversions (0 = auto: CPU cores minus 1) |
0
|
--batchFlatOutput
|
Write all output directly under --outputDir instead of preserving the source folder hierarchy |
Off |
Qlik Cloud
| Argument | Description | Default |
|---|---|---|
--unbuildOnly
|
Local only mode. Generate build output and conversion report on disk without connecting to Qlik Cloud. Intended for assessment, review, and offline use. The local output does not include media uploads, background resolution, alternate state creation, or sheet publishing. For details, see How conversion works. | Off |
--qsAppName NAME
|
Name for the Qlik Sense app in Qlik Cloud | QVW file name, PRJ folder name, or output folder name |
--appId APP_ID
|
Update an existing Qlik Cloud app instead of creating a new one | — |
--appIdFile PATH
|
Load app ID from a file | — |
--reuseAppId
|
Reuse the app ID from cloud/cloud_state.json if the file exists |
Off |
--preserveTargetAppScript
|
Keep the existing load script in the target app. The converted load script is not applied. Requires --appId or --reuseAppId. Can be combined with --reload to execute the existing script. |
Off |
--preserveTargetAppVariables
|
Keep the existing variables in the target app. The converted variables are not applied. Requires --appId or --reuseAppId. |
Off |
--noBackup
|
Skip the automatic pre-deploy backup when reusing an existing app. By default, QV2QS exports a no-data QVF to cloud/backups/ before modifying the app. |
Off |
--reload
|
Reload the app after building to execute the load script | Off |
--autoBinary
|
Upload QVW/QVF to Qlik Cloud for binary load, then delete after reload. Requires --reload. In single-project mode, also requires --qvw. In batch mode, QVW files are discovered automatically. Mutually exclusive with --binaryAppId. |
Off |
--binaryAppId APP_ID
|
Use an existing app in Qlik Cloud for the binary load instead of uploading. Mutually exclusive with --autoBinary. |
— |
--noPublishSheets
|
Do not publish sheets after building. By default, QV2QS publishes all converted sheets as base sheets so that every app user can see them. Use this flag to keep sheets as personal (unpublished) objects. When reusing an existing app (--reuseAppId or --appId), previously published sheets are restored automatically; this flag applies only to new sheets added in the current conversion. |
Off |
--noData
|
Build without data | Off |
--exportQvf
|
Export the app as a QVF file, then delete the cloud app | Off |
--exportQvfNoData
|
Export the QVF without data. Requires --exportQvf. |
Off |
--mediaUploadWorkers N
|
Parallel media upload threads | 2
|
--buildConfig PATH
|
Build config manifest passed to qlik app build. QV2QS auto-generates this file during conversion. Override only if providing a custom manifest. |
config.yml
|
--spaceId SPACE_ID
|
Target Qlik Cloud space for app creation | Personal space |
Authentication
| Argument | Description | Default |
|---|---|---|
--qlikContext NAME
|
qlik-cli context name for authentication | — |
--qlikTenantUrl URL
|
Tenant URL (https://<tenant>.<region>.qlikcloud.com). When combined with --qlikApiKey, authenticates directly without creating a qlik-cli context. |
— |
--qlikApiKey KEY
|
API key for authentication. When combined with --qlikTenantUrl, authenticates directly without creating a qlik-cli context. The key is not written to disk. |
— |
--qlikCliPath PATH
|
Path to qlik-cli executable | Bundled |
--qlikContextsFile PATH
|
Override qlik-cli contexts file location | — |
--qlikNoPrompt
|
Fail immediately with exit code 1 if authentication is missing. No interactive prompts. Suitable for CI/CD pipelines. | Off |
--setupQlikAuth
|
Configure Qlik Cloud authentication and exit. Not required when both --qlikTenantUrl and --qlikApiKey are provided. |
— |
Layout and styling
For a detailed explanation of fixed canvas and dynamic grid modes, see Conversion layout settings.
| Argument | Description | Default |
|---|---|---|
--fixedSheetCanvas
|
Enable fixed-size pixel canvas sheets (QlikView-style positioning) | Off |
--fixedSheetCanvasScale FACTOR
|
Scale canvas dimensions by this factor | 1.4
|
--fixedSheetCanvasObjectScale FACTOR
|
Scale object positions and sizes by this factor | 1.4
|
--fixedSheetCanvasMinWidthPx PX
|
Minimum canvas width in pixels | 1200
|
--fixedSheetCanvasMinHeightPx PX
|
Minimum canvas height in pixels | 700
|
--perSheetCanvasSize
|
Use per-sheet canvas dimensions instead of uniform sizing | Off |
--noAutoExtendDynamicSheet
|
Disable auto-extending sheet height in dynamic mode | Off |
--layoutShrinkX STEPS
|
Shrink layout container width by N grid steps (0–23) | 0
|
--layoutShrinkY STEPS
|
Shrink layout container height by N grid steps (0–11) | 0
|
--cropCanvasWidth PX
|
Crop canvas to exact width in pixels. Fixed canvas mode only. Must be specified together with --cropCanvasHeight. Mutually exclusive with --perSheetCanvasSize. |
0
|
--cropCanvasHeight PX
|
Crop canvas to exact height in pixels. Fixed canvas mode only. Must be specified together with --cropCanvasWidth. Mutually exclusive with --perSheetCanvasSize. |
0
|
--maxCanvasWidth PX
|
Maximum canvas width in pixels. 0 disables the limit. Fixed canvas mode only. |
0
|
--maxCanvasHeight PX
|
Maximum canvas height in pixels. 0 disables the limit. Fixed canvas mode only. |
0
|
--appTheme THEME
|
Qlik Sense app theme applied to the converted app. Accepts any built-in theme identifier (sense, horizon, breeze, card) or a custom theme name installed on the tenant. Sense Classic (sense) is the least intrusive theme and produces the highest 1:1 fidelity with QlikView. Non-classic themes may alter object borders, background colors, fonts, and padding. The theme sets the default only; users can switch themes at any time in the Qlik Sense client. |
sense
|
--disableSheetBackgrounds
|
Skip sheet background image extraction | Off |
--noDocBgFallback
|
Do not apply the document background to sheets without one | Off |
--sheetBackgroundColor COLOR
|
Solid color fill for all sheets (#RRGGBB, #RRGGBB@0.5, or transparent) |
— |
--showSheetHeader
|
Show the sheet header region | Off |
--skipHiddenSheets
|
Omit sheets with constant-false show conditions | Off |
Conversion report
The console report and Excel report are both enabled by default in CLI mode and in the user interface.
| Argument | Description | Default |
|---|---|---|
--report
|
Enable the console conversion report | On |
--noReport
|
Disable the console conversion report | — |
--reportXlsx [PATH]
|
Export the report as an Excel file. Accepts a filename (e.g. MyReport) or a full path; .xlsx is added automatically. Relative names are placed in outputDir/reports/. Omit the path to auto-name. |
Auto |
--noReportXlsx
|
Disable Excel export | — |
--reportIncludeBuiltIns
|
Include Current Selections and Search objects in the report | Off |
Console and logging
| Argument | Description | Default |
|---|---|---|
--console {pretty,plain,silent,ui}
|
Console output mode | pretty
|
--dark
|
Dark console theme | On |
--light
|
Light console theme | Off |
--surface
|
Enable background fill for the console | On (in pretty mode) |
--noSurface
|
Disable background fill | — |
--plain
|
Shortcut for --console plain |
— |
--silent
|
Shortcut for --console silent |
— |
--logLevel LEVEL
|
Log verbosity: DEBUG, INFO, WARNING, ERROR, CRITICAL |
INFO
|
--logDir FOLDER
|
Override the log output folder | %LOCALAPPDATA%\QV2QS\logs\ (single-project) or <outputDir>/logs/ (batch) |
--cleanLogs
|
Delete log files older than 30 days before the run | Off |
QV2QS supports four console output modes.
- Pretty — Rich-formatted output with colors, animated spinners, progress bars, and themed panels. Pretty mode is the default for interactive terminal use. Requires a color-capable terminal (Windows 10+, PowerShell 5+, or Unix-like shells).
- Plain — Timestamped text output with no ANSI escape codes. Every line is prefixed with an elapsed-time stamp and a phase tag in the format
[MM:SS] [phase] message. Headers and tables use ASCII characters. Suitable for CI/CD pipelines, log files, and terminals that do not support ANSI formatting. - Silent — Suppresses all standard output. Only errors are displayed. Suitable for automated batch processing and scripted workflows where no console output is needed.
- UI — Line-oriented output without timestamps or ANSI codes. The user interface sets this mode automatically when launching a conversion subprocess. The format is optimized for the embedded log viewer. Running
--console uifrom a terminal produces readable but unformatted output; use--plainor--console prettyinstead for direct terminal use.
The --dark and --light flags select a color theme. The dark theme (default) uses a deep navy Qlik-inspired palette. The light theme uses a light gray palette. The --surface flag enables a subtle background fill behind each output line. Surface fill is enabled by default in pretty mode. Use --noSurface to disable the background fill.
In single-project mode, log files are written to %LOCALAPPDATA%\QV2QS\logs\ by default. In batch mode, log files are written to the logs/ subfolder in the output directory. Override the location with --logDir. Set --logLevel DEBUG to capture detailed diagnostic output for troubleshooting conversion issues. Use --cleanLogs to delete log files older than 30 days before each run. For a full description of log file locations, rotation, and format, see Logging and diagnostics.
Load script
| Argument | Description | Default |
|---|---|---|
--scriptReplacements PATH
|
JSON file with script replacement rules. When provided, only the rules in the file execute. Built-in defaults do not auto-load. See format below. | — |
--noScriptReplacements
|
Disable all script replacements. No rules execute, regardless of whether a file is provided. | Off |
By default, QV2QS applies eight built-in rules that normalize Windows backslash paths to forward slashes for Qlik Cloud compatibility. The following table lists each built-in rule.
| ID | Description | Targets |
|---|---|---|
| 1 | Normalize backslashes in lib:// paths |
lib://DataFiles\subfolder\file.qvd
|
| 2 | Normalize backslashes in STORE...INTO paths |
STORE table INTO 'C:\data\file.qvd'
|
| 3 | Normalize backslashes in FROM paths (quoted) |
FROM 'C:\data\file.qvd'
|
| 4 | Normalize backslashes in LET statement paths |
LET vPath = 'C:\data\files';
|
| 5 | Normalize backslashes in SET statement paths |
SET vPath = 'C:\data\files';
|
| 6 | Normalize backslashes in BINARY statement paths |
BINARY 'C:\apps\source.qvw'
|
| 7 | Normalize backslashes in FROM paths (unquoted) |
FROM C:\data\file.qvd
|
| 8 | Normalize backslashes in $(Variable=path) expansion |
$(Must_Includes=C:\lib\file.qvs)
|
Each rule uses a two-stage matching process. The pattern field is a regex that selects a region of the load script. The search field is then applied only within each matched region. This approach prevents unintended replacements outside the targeted context.
The --scriptReplacements argument accepts a JSON file that becomes the single source of truth for all replacement rules. When a file is provided, built-in defaults do not auto-load. To include built-in rules alongside custom rules, export the full rule set from the wizard and edit the exported file. Rules execute in execution_order order.
Three CLI behaviors are available:
- No flag — the eight built-in rules execute.
--scriptReplacements <file>— only rules in the file execute. Built-in defaults do not auto-load.--noScriptReplacements— no rules execute.
To create a custom rules file, open the wizard, click Export in the Script replacements section, and use the exported JSON as a starting point. The exported file contains all eight built-in rules in the correct format. Add, remove, or modify rules as needed, then pass the file with --scriptReplacements.
The --scriptReplacements file is a JSON array of rule objects:
[
{
"description": "Replace server path with lib connection",
"pattern": "FROM\\s+'[^']*'",
"search": "\\\\\\\\server\\\\share\\\\",
"replace": "lib://DataFiles/",
"is_regex": true,
"case_sensitive": false,
"enabled": true,
"execution_order": 1
}
]
Each rule has the following fields:
| Field | Description | Required |
|---|---|---|
description
|
Human-readable label for the rule | Yes |
pattern
|
Regex that selects regions of the script to examine | Yes |
search
|
Text or regex to find within each matched region | Yes |
replace
|
Replacement text | No (default: empty string, which deletes matched text) |
is_regex
|
Whether search is a regex (true) or literal string (false) |
No (default: true) |
case_sensitive
|
Whether matching is case-sensitive | No (default: false) |
enabled
|
Whether the rule is active | No (default: true) |
id
|
Numeric identifier for UI tracking | No |
execution_order
|
Numeric value that controls execution order. Lower values execute first. | No (default: 0) |
The file also accepts camelCase field names (isRegex, caseSensitive, executionOrder) for compatibility with files exported from the wizard.
Other
| Argument | Description | Default |
|---|---|---|
--listboxBackgroundExpr EXPR
|
Listbox background color. dynamic preserves QV colors. Also accepts #RRGGBB, #AARRGGBB, rgb(r,g,b), or argb(a,r,g,b). |
dynamic
|
--disableDateStateStickySort
|
Disable the date field sort guard. See below. | Off |
--fixSingleQuotedSearch / --noFixSingleQuotedSearch |
Convert single-quoted wildcards and comparisons to double quotes in set analysis. See below. | On |
--fixUnquotedSetValues / --noFixUnquotedSetValues |
Experimental. Wrap unquoted bare string values in single quotes in set analysis. See below. | Off |
--ui
|
Launch the user interface instead of running a conversion | Off |
--port PORT
|
User interface port | Auto |
--noBrowser
|
Do not open the browser automatically when launching the UI | Off |
--version
|
Show version and exit | — |
--accept-eula
|
Accept the End User License Agreement without an interactive prompt. Intended for CI/CD pipelines and automated workflows. | Off |
Date field sort guard
By default, Qlik Sense sorts selected values to the top of a listbox. For date-like fields such as Quarter, Month, or Year, this reordering breaks the expected chronological sequence. QV2QS applies a heuristic to detect date-like field names and suppress state-based sorting on those fields, keeping values in their natural order regardless of selection state.
The heuristic tokenizes each field name by splitting on non-alphanumeric characters and camelCase boundaries (for example, OrderDate becomes order and date). All tokens are lowercased. A field matches if any token equals one of the following: date, dates, month, months, year, years, quarter, quarters, qtr, qtrs, week, weeks, day, days, fiscal, fy, period, calendar. A field also matches if any token ends with date, month, or year (for example, OrderDate, FiscalMonth). The tokens update, candidate, and validate are excluded to avoid false positives. Matching is case-insensitive and uses English tokens only. Non-English field names (for example, Monat or Fecha) are not detected.
Fields that match the heuristic have state-based sorting removed and automatic sorting disabled.
Use --disableDateStateStickySort to turn off this heuristic. When disabled, all listbox fields use default Qlik Sense sorting behavior, including state-based reordering.
Set analysis quoting fixes
QlikView and Qlik Sense interpret quoting in set analysis modifiers differently. QV2QS applies two independent fixes during conversion. The single-quoted search fix is enabled by default. The unquoted set values fix is experimental and disabled by default.
Fix single-quoted search values (--fixSingleQuotedSearch)
Single-quoted values containing search syntax are converted to double quotes. Detected search patterns include wildcards (*, ?, ^), comparison operators (>, >=, <, <=), fuzzy search (~), expression search (=), search modifiers (+, -), and compound search ((…|…), (…&…)):
{<Year={'2*'}>}becomes{<Year={"2*"}>}{<Amount={'>100'}>}becomes{<Amount={">100"}>}{<Customer={'~company'}>}becomes{<Customer={"~company"}>}
Single-quoted plain text literals (for example, 'USA') and single-quoted values on numeric fields are not affected. Use --noFixSingleQuotedSearch to disable this fix.
Fix unquoted set values (--fixUnquotedSetValues) — experimental
Unquoted bare string values are wrapped in single quotes:
{<Country={USA}>}becomes{<Country={'USA'}>}
Numeric values (2024), dollar-sign variables ($(vYear)), and double-quoted strings are left unchanged. This fix is disabled by default. Pass --fixUnquotedSetValues to enable it. Use --noFixUnquotedSetValues to explicitly disable it.
Both fixes apply to dimension and measure expressions only. Unsupported function findings are not modified. When a fix is disabled, the flagged patterns remain for manual review in the Expression_Findings worksheet.