Skip to content


CLI stands for command-line interface. It's a technical way of saying this program doesn't have a graphical interface like a website or a traditional desktop application. Instead, you use a program like Apple's Terminal or another terminal emulator, such as iTerm2.



macOS icon

Tested with 10.15.7 (Catalina) to 12.2.1 (Monterey)

Libre Office

macOS icon

Tested with to


If you don't have Libre Office installed, SVGtoPPT can install it for you  🙂


Install via command line by using macOS Terminal or a terminal emulator. Below you'll find commands for the latest version, but feel free to change "latest" to whichever version you want.

Do you have Libre Office installed?

SVGtoPPT can install Libre Office it for you.

Install command:

version="latest"; curl -s "$version/src/" | bash -s -- -i complete

If you want to install Libre Office yourself you can download it from their website or use Homebrew:

brew install --cask libreoffice

Install command:

version="latest"; curl -s "$version/src/" | bash -s -- -i basic


$ svgtoppt [PATH_TO_SVG_FILE]
  1. Workflow will work in the background and open the new PPT file in Keynote when finished
  2. Select all vectors Ctrl + A
  3. Copy (Ctrl + C) and paste (Ctrl + V) shapes to other Keynote presentations


svgtoppt ~/Desktop/logo.svg

# The entire path isn't required if the SVG file is in your current working directory
cd ~/Desktop
svgtoppt logo.svg


If the standard configuration doesn't fit your workflow, that's ok! You can use flags to specify single-use functionality or change the defaults.


Long Flag Short Flag Default Value Description
‑‑input -i none; required Filepath of the SVG file or directory to be converted
‑‑template_ppt -t ~/svg-to-keynote/template.ppt Filepath of the template PPT
‑‑output_directory -o ~/svg-to-keynote/Output Filepath of the directory where PPT files are output
‑‑ppt_name -p the name of the SVG file
(e.g. my_logo.svg becomes my_logo.ppt)
The name of the PPT file that is output
‑‑force_ppt -f false false : creates a new, unique PPT file each time a command is run

true : makes it idempotent; has the potential to overwrite an existing PPT file
‑‑where_to_open -w keynote Where the PPT file is opened in after it's created

Don't open: none
Apple Keynote: keynote
Microsoft PowerPoint: power
Libre Office: libre
Apache OpenOffice: oo
‑‑quiet -q false Quiet mode to prevent output


# The -i flag is required in all requests
svgtoppt -i ~/Desktop/logo.svg
svgtoppt --input=~/Desktop/logo.svg

# The entire path isn't required if the SVG file is in your current working directory
cd ~/Desktop
svgtoppt -i logo.svg
svgtoppt --input=logo.svg

# Pass in a directory and the PPT file will have a slide for each SVG file found
svgtoppt -i ~/Desktop/logos
svgtoppt --input=~/Desktop/logos

# Use a custom template PPT file
svgtoppt -i logo.svg -t ~/Documents/blake_template.ppt
svgtoppt --input=logo.svg --template_ppt=~/Documents/blake_template.ppt

# Save all your new PPT files to your desktop for easy access
svgtoppt -i logo.svg -o ~/Desktop
svgtoppt --input=logo.svg --output_directory=~/Desktop

# By default the output would be logo.ppt; here we can give it another name
svgtoppt -i logo.svg -p amazing_logo
svgtoppt --input=logo.svg --ppt_name=amazing_logo

# The -p flag works with or without the PPT extension (".ppt")
svgtoppt -i logo.svg -p amazing_logo.ppt
svgtoppt --input=logo.svg --ppt_name=amazing_logo.ppt

# This request ran twice creates 2 files: logo.ppt and logo-1.ppt
svgtoppt -i logo.svg -f false
svgtoppt --input=logo.svg --force_ppt=false

# This request ran twice creates 1 file (logo.ppt) that gets overwritten once (first one is not recoverable)
svgtoppt -i logo.svg -f true
svgtoppt --input=logo.svg --force_ppt=true

# Creates the PPT file without opening it
svgtoppt -i logo.svg -w none
svgtoppt --input=logo.svg --where_to_open=none

# Creates the PPT file and opens it in Microsoft PowerPoint
svgtoppt -i logo.svg -w power
svgtoppt --input=logo.svg --where_to_open=power

# Request will work silently without output unless there's a failure/error
svgtoppt -i logo.svg -q
svgtoppt --input=logo.svg --quiet



Add the --save_def flag (-s) to save the other flags on the current request as your defaults.

# Saves defaults for input="$PWD/logo.svg" and where_to_open="none"
svgtoppt -i logo.svg -w none -s
svgtoppt --input=logo.svg --where_to_open=none --save_pref

# Want to run the same request again? With a saved default for input, you don't have to pass in anything

# If you want to save defaults without running a conversion, that's supported too
svgtoppt -i logo.svg -w none -s -x
svgtoppt --input=logo.svg --where_to_open=none --save_pref --stop_creations


Explicitly passed in parameters receive higher priority than the corresponding defaults.


# If you have a default where_to_open=libre it gets ignored by this request and Keynote will open
svgtoppt --input=logo.svg --where_to_open=keynote


You can easily reset all your defaults back to the ones listed above.

svgtoppt reset_def


  • Feel free to edit template.ppt to your liking; it's a 4K (53.33" x 30.00") blank presentation