⚡ Dynamically generated, customizable SVG that gives the appearance of typing and deleting text. Typing SVGs can be used as a bio on your Github profile readme or repository.

Overview

⌨️ Readme Typing SVG

📃 Table of contents

Quick setup

  1. Copy-paste the markdown below into your GitHub profile README
  2. Replace the value after ?lines= with your text. Separate lines of text with semicolons and use + or %20 for spaces.
  3. (Optional) Adjust the width parameter (see below) to fit the full width of your text.
[![Typing SVG](https://readme-typing-svg.herokuapp.com/?lines=First+line+of+text;Second+line+of+text)](https://git.io/typing-svg)

Demo site

Here you can easily customize your Typing SVG with a live preview.

https://readme-typing-svg.herokuapp.com/demo/

Demo Site

🚀 Example usage

Feel free to open a PR and add yours!

🔧 Options

Parameter Details Type Example
lines Text to display with lines separated by ; and + for spaces string First+line;Second+line;Third+line
center true to center text or false for left aligned (default: false) boolean true or false
vCenter true to center vertically or false(default) to align above the center boolean true or false
height Height of the output SVG in pixels (default: 50) integer Any positive number
width Width of the output SVG in pixels (default: 400) integer Any positive number
font Font family (default: monospace) string Any font from Google Fonts
size Font size in pixels (default: 20) integer Any positive number
color Color of the text (default: 36BCF7) string Hex code without # (eg. 00ff00)
multiline true to wrap lines or false to retype on one line (default: false) boolean true or false

📤 Deploying it on your own

If you can, it is preferable to host the files on your own server.

Doing this can lead to better uptime and more control over customization (you can modify the code for your usage).

You can deploy the PHP files on any website server with PHP installed or as a Heroku app.

Step-by-step instructions for deploying to Heroku

  1. Sign in to Heroku or create a new account at https://heroku.com
  2. Click the "Deploy to Heroku" button below

Deploy

  1. On the page that comes up, click "Deploy App" at the end of the form
  2. Once the app is deployed, click "Manage App" to go to the dashboard
  3. Scroll down to the Domains section in the settings to find the URL you will use in place of readme-typing-svg.herokuapp.com

🤗 Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request if you have a way to improve this project.

Make sure your request is meaningful and you have tested the app locally before submitting a pull request.

Installing requirements

Requirements

Linux

sudo apt-get install php
sudo apt-get install php-curl
sudo apt-get install composer

Windows

Install PHP from XAMPP or php.net

How to install and run PHP using XAMPP (Windows)

📥 Download Composer

Clone the repository

git clone https://github.com/DenverCoder1/readme-typing-svg.git
cd readme-typing-svg

Running the app locally

composer start

Open http://localhost:8000/ and add parameters to run the project locally.

Running the tests

Before you can run tests, PHPUnit must be installed. You can install it using Composer by running the following command.

composer install

Run the following command to run the PHPUnit test script which will verify that the tested functionality is still working.

composer test

🙋‍♂️ Support

💙 If you like this project, give it a and share it with friends!

Youtube Sponsor with Github

Buy me a coffee


Made with ❤️ and PHP

Powered by Heroku

Comments
  • Add speed parameter

    Add speed parameter

    Allow changing the animation duration with a URL parameter.

    Currently, the speed is always the same (4 seconds to type and 1 second to delete) regardless of how wide the image output is.

    For an image that's not very wide, this is extremely slow.

    A url parameter, for example duration, which takes a number in seconds and scales the animation to that length would be useful in this case.

    Alternatively, we could make speed be a parameter and have the duration calculated from speed with an inverse function (eg. 50 / $speed or something similar) - see comment.

    If speed is used, the width of the SVG can also be taken into account so that it is a consistent speed for any size (see comment). If duration is used, this is not an issue.

    enhancement good first issue 
    opened by DenverCoder1 17
  • Animated text not correctly displaying

    Animated text not correctly displaying

    Describe the bug

    The given lines are lines=Type+messages+everywhere!;Add+a+bio+to+your+profile!;Add+a+description+to+your+repo!;Make+your+readme+stand+out! and yet the third line is animated as dd+a+description+to+your+repo! with the missing A

    Have a look at the Readme of this Repo: https://github.com/DenverCoder1/readme-typing-svg or see it directly by visiting the link that I posted below, or the gif and the end of this bug report.

    To Reproduce

    Visit https://readme-typing-svg.herokuapp.com/?lines=Type+messages+everywhere!;Add+a+bio+to+your+profile!;Add+a+description+to+your+repo!;Make+your+readme+stand+out!&center=true&width=360&height=50%22 which is exactly the link that is currently on top of this repo's readme

    Expected behavior

    The third line should not be missing the A at the start

    Screenshots

    ezgif com-video-to-gif

    bug documentation 
    opened by 8BitJonny 13
  • Need a RESET button

    Need a RESET button

    After filling out the online app with names of Google Fonts, if we decide to go with the default one, there is no way to go back to it if the user does not remember the settings (font name, size etc.)

    This can be easily solved by having a RESET button on the app that would clear the values present in the app and go back to the default values.

    enhancement 
    opened by rajtilakjee 9
  • Option not to erase/rewrite text

    Option not to erase/rewrite text

    Is your feature request related to a problem? Please describe.

    Currently, once the text is written, it's then erased and rewritten over and over.

    Describe the solution you'd like

    I'd love an option for it to write the text once and for the text to just stay written.

    Additional context

    This is so cool, thanks for making this!

    enhancement 
    opened by seisvelas 8
  • Fix darkmode toggle

    Fix darkmode toggle

    Description

    remove error message displayed on browser

    Type of change

    • [x] Bug fix (added a non-breaking change which fixes an issue)

    How Has This Been Tested?

    • [x] Ran tests with composer test

    Checklist:

    • [x] I have checked to make sure no other pull requests are open for this issue
    • [x] The code is properly formatted and is consistent with the existing code style
    • [x] My changes generate no new warnings
    opened by R055A 7
  • Replace Demo Screenshot With GIF

    Replace Demo Screenshot With GIF

    Description

    Replaced demo screenshot with animated gif

    Fixes # #14

    Type of change

    Update

    • [x] Updated documentation (updated the readme, templates, or other repo files)

    How Has This Been Tested?

    Checklist:

    • [x] The code is properly formatted and is consistent with the existing code style
    • [x] I have checked to make sure no other pull requests are open for this issue
    • [x] I have commented my code, particularly in hard-to-understand areas
    • [x] I have made corresponding changes to the documentation
    • [x] My changes generate no new warnings

    Screenshots

    documentation 
    opened by Evavic44 6
  • Google Font Error

    Google Font Error

    Describe the bug A clear and concise description of what the bug is.

    I tried to deploy the app in my Heroku account. It works fine but when every I change new font I'am getting some error in the output. To Reproduce Steps to reproduce the behavior:

    1. Go to My deployed domain
    2. Change the font to QuickSand or any other font.
    3. See error

    Expected behavior A clear and concise description of what you expected to happen.

    I wanted my deployment link to work like the original one

    Screenshots If applicable, add screenshots to help explain your problem. Screenshot 2022-02-28 at 7 50 57 AM

    Desktop (please complete the following information):

    • OS: Mac
    • Browser Safari
    • Version 12.2.1

    Smartphone (please complete the following information):

    • Device: [e.g. iPhone6]
    • OS: [e.g. iOS8.1]
    • Browser [e.g. stock browser, safari]
    • Version [e.g. 22]

    Additional context Add any other context about the problem here.

    question 
    opened by VikashPR 5
  • Add ability to include a 'pause' at the end of a typed line before the next line begins

    Add ability to include a 'pause' at the end of a typed line before the next line begins

    is your feature request related to a problem? Please describe.

    There currently isn't a way to pause the animation once it has finished typing. The motivation is that I want users to be able to read the typed sentence for a couple of seconds before the next line kicks off. I've gotten comments from nearly everyone who has reviewed my portfolio that they wish there was more time before the next line types.

    The current implementation quickly goes to the next line after the current line has finished typing.

    Describe the solution you'd like

    I would like the animation to stop at the end of the line for a specified time. After that time has passed, the next line begins.

    Describe alternatives you've considered

    I tried adding lots of spaces at the end of the line, but that doesn't appear to lengthen the time the line is on screen.

    The duration property isn't what I am looking for because that slows down the whole animation instead of adding a pause at the end of the line.

    enhancement 
    opened by jsolly 4
  • Horizontal centering does not work

    Horizontal centering does not work

    Description:

    Horizontal centering (center=true) does not seem to work -- I have not tried committing the changes but in preview it does not get horizontally centered. Does the preview not show correctly or does it just not work?

    Thank you!

    Code:

    [![Typing SVG](https://readme-typing-svg.herokuapp.com?font=Roboto&color=031C80&center=true&vCenter=false&width=400&height=50&lines=The+five+boxing+wizards+jump+quickly;How+vexingly+quick+daft+zebras+jump)](https://git.io/typing-svg)

    bug 
    opened by krakxn 4
  • feat: Add speed control variable

    feat: Add speed control variable

    Description

    Added a speed variable to control the speed of "typing". On demo it is called "Print Speed" as shown in the screenshot. Default value is 10 which is equivalent to the previous static value of 5 seconds.

    Fixes #12

    Type of change

    • [ ] Bug fix (added a non-breaking change which fixes an issue)
    • [x] New feature (added a non-breaking change which adds functionality)
    • [ ] Updated documentation (updated the readme, templates, or other repo files)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

    How Has This Been Tested?

    Spent half an hour trying to set up composer on linux and windows and didn't get it working. So manually tested with live deployment here on Heroku

    • [ ] Ran tests with composer test
    • [x] Added or updated test cases to test new features

    Checklist:

    • [x] I have checked to make sure no other pull requests are open for this issue
    • [x] The code is properly formatted and is consistent with the existing code style
    • [x] I have commented my code, particularly in hard-to-understand areas
    • [x] I have made corresponding changes to the documentation
    • [x] My changes generate no new warnings

    Screenshots

    Readme print speed

    opened by BenjaminMichaelis 4
  • Delay in new line when `Horizontally Centered` is true

    Delay in new line when `Horizontally Centered` is true

    Describe the bug There is a noticeable delay in new lines when Horizontally Centered is set to true AND width of the line is less than width of the svg

    To Reproduce Steps to reproduce the behavior:

    1. Go to https://readme-typing-svg.herokuapp.com/demo/
    2. Add lines There is no problem in this line as it is long., But this takes, time to appear :(
    3. Set Horizontally Centered to true
    4. See error

    Expected behavior No delay in occurrence of new line is expected

    Screenshots

    https://user-images.githubusercontent.com/43103163/138579361-baf148ea-077a-4ded-8004-efe9c4fb42d3.mp4

    Desktop (please complete the following information):

    • OS: Linux(Pop!_OS)
    • Browser: Firefox
    • Version: v93
    bug no-issue-activity 
    opened by PROxZIMA 4
  • Scaleup

    Scaleup

    Not really sure if this is a relevant scope, But it would be nice if there was an option for OAuth, So that i could have a place for all my differently generated svgs this will also allow the option to use a personal api so i can integrate and change when i desire

    I hope you get what i mean This could be super cool, you essentially turn a static page into a pseudo dynamic one, not necessarily with realtime updates, but still great for simple and powerful content management . lemme know if this is interesting and or relevant , i'm starting to realize that these requirements are becoming easier and easier to deploy so maybe it's not a big stretch

    Thanks and have a good one !

    enhancement 
    opened by fire17 0
  • Drag Lines to reorder them

    Drag Lines to reorder them

    Love this project! would be really nice if i could easily, drag and drop, the lines around to change their order currently im copy/pasting/deleting etc.

    thanks and have a good one! :)

    enhancement 
    opened by fire17 0
  • Am i the first to suggest random order ?

    Am i the first to suggest random order ?

    it would be nice if there was a boolean for whether the list show be displayed in order, or in random order.

    also also, it would be a real nice ux bonus if the lines i've already entered could be dragged around above and below each other to easily change the order

    thanks a lot!

    enhancement 
    opened by fire17 1
  • Support for text containing semicolons

    Support for text containing semicolons

    Currently it isn't possible, as far as I know, to use semicolons in the lines parameter as text since it will be always be treated as a line separator.

    Current workarounds include using a Greek Question Mark ; in place of the semicolon in your text.

    Possible ideas for solutions

    Option 1: Allow specifying the separator character as another parameter (eg. &sep=|) to change which character is used for separation and allowing semicolons. On the demo site this can be hidden from the user and just use ; if no semicolons are used in the text, and something else if there are (Possibly the separator could become ;; if ; appears in the text, ;;; if ;; appears in the text, etc. to allow for infinitely many possible separators depending on the text.)

    Option 2: Allow a way of "escaping" semicolons (eg. \;) in the text which should get treated as text on the backend instead of as a separator. (Note may be a breaking change since it changes the way a line ending with a backslash is parsed.)

    Option 3: Automatically convert semicolons in the text on the demo site to Greek Question Marks instead of making a backend solution. (This is not ideal since it doesn't provide an easy solution for those not using the demo site.)

    I think Option 1 would be the cleanest solution, I am open to other ideas if anyone has input on the subject.

    enhancement help wanted good first issue up for grabs 
    opened by DenverCoder1 0
  • Make use of All Contributors to list contributors

    Make use of All Contributors to list contributors

    I think, it would be nice to list all contributors in the Readme, with their emoji key and profile picture using All Contributors. https://allcontributors.org/docs/en/overview

    enhancement 
    opened by MagicLike 1
Releases(v0.7.0)
  • v0.7.0(Nov 6, 2022)

    Features

    • Added font-weight support by @it-jhack in https://github.com/DenverCoder1/readme-typing-svg/pull/165
    • demo: add the FAQ link to the demo site (#122) (7e5407d)
    • demo: Updated demo site default values (#120) (370b128)

    Performance Improvements

    What's Changed

    • ci: Change release to be on dispatch instead of push by @DenverCoder1 in https://github.com/DenverCoder1/readme-typing-svg/pull/121
    • feat(demo): Updated demo site default values by @DenverCoder1 in https://github.com/DenverCoder1/readme-typing-svg/pull/120
    • feat(demo): add the FAQ link to the demo site by @DenverCoder1 in https://github.com/DenverCoder1/readme-typing-svg/pull/122
    • style: replace <?php echo with <?= shorthand by @DenverCoder1 in https://github.com/DenverCoder1/readme-typing-svg/pull/123
    • docs(readme): Update duration and pause in the header SVG by @DenverCoder1 in https://github.com/DenverCoder1/readme-typing-svg/pull/124
    • Added example to README by @Aquarius-blake in https://github.com/DenverCoder1/readme-typing-svg/pull/126
    • docs(readme): Update gif with the new demo site by @DenverCoder1 in https://github.com/DenverCoder1/readme-typing-svg/pull/125
    • chore(deps-dev): Bump phpunit/phpunit from 9.5.21 to 9.5.23 by @dependabot in https://github.com/DenverCoder1/readme-typing-svg/pull/128
    • chore(deps-dev): Bump phpunit/phpunit from 9.5.23 to 9.5.24 by @dependabot in https://github.com/DenverCoder1/readme-typing-svg/pull/129
    • docs(readme): Added D3vil0per to examples by @D3vil0p3r in https://github.com/DenverCoder1/readme-typing-svg/pull/131
    • docs: Update links to demolab custom domain by @DenverCoder1 in https://github.com/DenverCoder1/readme-typing-svg/pull/132
    • Update README.md by @D3vil0p3r in https://github.com/DenverCoder1/readme-typing-svg/pull/133
    • docs(readme): Added EliusHHimel to examples by @EliusHHimel in https://github.com/DenverCoder1/readme-typing-svg/pull/134
    • perf: Use text parameter to fonts API by @DenverCoder1 in https://github.com/DenverCoder1/readme-typing-svg/pull/136
    • chore(deps-dev): Bump phpunit/phpunit from 9.5.24 to 9.5.25 by @dependabot in https://github.com/DenverCoder1/readme-typing-svg/pull/140
    • docs(README.md): Add jcs090218 to examples by @jcs090218 in https://github.com/DenverCoder1/readme-typing-svg/pull/141
    • docs(readme): Added Rishabh2804 to examples by @Rishabh2804 in https://github.com/DenverCoder1/readme-typing-svg/pull/143
    • docs(readme): remove lmfao-jude, add vantr-o to examples by @lmfao-jude in https://github.com/DenverCoder1/readme-typing-svg/pull/139
    • docs(readme): Update quick start and create link to contributing.md by @DenverCoder1 in https://github.com/DenverCoder1/readme-typing-svg/pull/149
    • Update README.md by @shalinibhatt in https://github.com/DenverCoder1/readme-typing-svg/pull/150
    • docs(readme): Added example to readme by @Jude-Gideon in https://github.com/DenverCoder1/readme-typing-svg/pull/153
    • docs(readme): Remove examples not using typing SVG by @DenverCoder1 in https://github.com/DenverCoder1/readme-typing-svg/pull/142
    • Feat/147/prettier workflow by @Vyvy-vi in https://github.com/DenverCoder1/readme-typing-svg/pull/152
    • chore(deps): Bump vlucas/phpdotenv from 5.4.1 to 5.5.0 by @dependabot in https://github.com/DenverCoder1/readme-typing-svg/pull/155
    • Add UlisesAlexanderAM to README by @UlisesAlexanderAM in https://github.com/DenverCoder1/readme-typing-svg/pull/158
    • docs(readme): Add SpookyJelly to Readme by @SpookyJelly in https://github.com/DenverCoder1/readme-typing-svg/pull/159
    • docs(readme): Added yousafesaeed to examples by @yousafesaeed in https://github.com/DenverCoder1/readme-typing-svg/pull/160
    • chore(deps-dev): Bump phpunit/phpunit from 9.5.25 to 9.5.26 by @dependabot in https://github.com/DenverCoder1/readme-typing-svg/pull/161
    • docs(readme): Added CFCIFE to examples by @CFCIfe in https://github.com/DenverCoder1/readme-typing-svg/pull/163
    • feature: Added font-weight support by @it-jhack in https://github.com/DenverCoder1/readme-typing-svg/pull/165

    New Contributors

    • @Aquarius-blake made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/126
    • @D3vil0p3r made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/131
    • @EliusHHimel made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/134
    • @jcs090218 made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/141
    • @Rishabh2804 made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/143
    • @shalinibhatt made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/150
    • @Jude-Gideon made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/153
    • @Vyvy-vi made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/152
    • @UlisesAlexanderAM made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/158
    • @SpookyJelly made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/159
    • @yousafesaeed made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/160
    • @CFCIfe made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/163
    • @it-jhack made their first contribution in https://github.com/DenverCoder1/readme-typing-svg/pull/165

    Full Changelog: https://github.com/DenverCoder1/readme-typing-svg/compare/v0.6.0...v0.7.0

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Aug 8, 2022)

    Features

    By default this is set to 0, you can use it by setting it to a non-negative number of milliseconds to wait between lines:

    For a 1-second pause between lines:

    ...&pause=1000
    

    Try it out on the demo site!

    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Jul 28, 2022)

  • v0.4.1(Mar 25, 2022)

  • v0.4.0(Mar 8, 2022)

  • v0.3.0(Jan 21, 2022)

  • v0.2.0(Jan 14, 2022)

  • v0.1.1(Dec 15, 2021)

Owner
Jonah Lawrence
📺 https://youtube.com/DevProTips 💻 Full Stack Dev 🎨 UI designer 🎓 Computer Science 2021 📚 Always learning!
Jonah Lawrence
Upload SVG images in Magento 2.x

Upload SVG images in Magento 2.x This extension for Magento 2 allows uploading SVG images in the following sections: wysiwyg editor in static blocks a

Magegadgets 6 Dec 23, 2022
This is my attempt at building a decent SVG sanitizer in PHP. The work is laregely borrowed from DOMPurify.

svg-sanitizer This is my attempt at building a decent SVG sanitizer in PHP. The work is laregely borrowed from DOMPurify. Installation Either require

Daryll Doyle 391 Dec 25, 2022
PHP Library for generating SVG avatars based on React Avataaars

PHP library for Avataaars PHP Library for generating SVG avatars based on React Avataaars.

null 5 Apr 16, 2022
PHPExif is a library which gives you easy access to the EXIF meta-data of an image

PHPExif v0.6.4 PHPExif is a library which gives you easy access to the EXIF meta-data of an image. PHPExif serves as a wrapper around some native or C

null 135 Dec 4, 2022
With the help of QR code technologies, digital entry passes can be created, which a user can show at the entry point to pass the door.

Navratri_Entry With the help of QR code technologies, digital entry passes can be created, which a user can show at the entry point to pass the door.

Kushang Shah 5 Aug 7, 2022
A simple page view counter that store data as text and shows data as a PNG image

Image Counter A simple page view counter that store data as text and shows the counter as a PNG image.

Victor Ribeiro 10 Apr 19, 2022
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.

Lychee A great looking and easy-to-use photo-management-system. Since the 1st of April 2018 this project has moved to it's own Organisation (https://g

Tobias Reich 6.2k Dec 31, 2022
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.

A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.

Lychee Organisation 2.3k Jan 1, 2023
Create images with embedded text using advanced typography

Image with Text This class makes it super easy to render images with multiple, independently styled text blocks. You can control each text block's ali

New Media Campaigns 144 Sep 7, 2022
Contao extension to provide the possibility of defining alternative images to be used on different output devices.

Contao Image Alternatives This extensions expands the capabilities of using responsive images with art direction in Contao. You will have the possibil

inspiredminds 6 May 30, 2022
👤 Add your own default WordPress avatar.

Custom User Avatar WordPress currently only allows you to use custom avatars that are uploaded through Gravatar. Custom User Avatar enables you to use

David Artiss 13 Jan 24, 2022
Optimize your images on the fly with Glide for Laravel.

Glide for Laravel Optimize your images on the fly with Glide for Laravel. Support us Like our work? You can support us by purchasing one of our produc

Flowframe 53 Oct 17, 2022
Laravel Favicon - Create dynamic favicons based on your environment settings.

Laravel Favicon Create dynamic favicons based on your environment settings. Laravel Package Development If you want to learn how to create reusable PH

Beyond Code 320 Dec 12, 2022
Manage your photos with Piwigo, a full featured open source photo gallery application for the web

Manage your photos with Piwigo, a full featured open source photo gallery application for the web. Star us on Github! More than 200 plugins and themes available. Join us and contribute!

Piwigo 1.8k Apr 14, 2022
Image optimization / compression library. This library is able to optimize png, jpg and gif files in very easy and handy way. It uses optipng, pngquant, pngcrush, pngout, gifsicle, jpegoptim and jpegtran tools.

Image Optimizer This library is handy and very easy to use optimizer for image files. It uses optipng, pngquant, jpegoptim, svgo and few more librarie

Piotr Śliwa 879 Dec 30, 2022
Image Cache is a very simple PHP class that accepts an image source and will compress and cache the file, move it to a new directory, and returns the new source for the image.

NO LONGER MAINTAINED!!! Image Cache v. 1.0.0 Image Cache is a very simple PHP class that accepts an image source and will compress and cache the file,

Erik Nielsen 455 Dec 30, 2022
PHP Exif Library - library for reading and writing Exif headers in JPEG and TIFF files using PHP.

PEL: PHP Exif Library README file for PEL: PHP Exif Library. A library with support for reading and writing Exif headers in JPEG and TIFF images using

null 264 Dec 4, 2022
The Tinify API allows you to compress and optimize WebP, JPEG and PNG images.

The Tinify API allows you to compress and optimize WebP, JPEG and PNG images. It is designed as a REST service. The client libraries in various languages make it very easy to interact with the Tinify API.

Devscast 10 May 13, 2022