This is a user manual for the Plainly Videos App.


This section provides a general introduction and defines terms.

Plainly is a simple to use video generator that helps businesses create automated video creation workflows. It uses Adobe After Effects projects (.aep) to create dynamic videos which you can re-use and render as many times as you wish. Here is how the basic workflow with Plainly usually looks:

  1. Upload a project to Plainly

  2. Select the composition and layers to parametrize and create templates

  3. Provide data and render videos from that data


Projects are simply Adobe After Effects project files (.aep) packed together with all needed assets like images, videos, etc. To learn more about best practices when it comes to projects, please read the Projects section.

You can have as many projects as you wish inside one account.


Templates are created by a user, and they represent a parametrized composition from the project (After Effects file). Templates consist out of a single rendering composition, and you can have as many templates inside a project.

You can also use the same composition over and over again to create different templates if you choose different layers to parametrize.


Layers are elements inside an After Effects composition. Plainly currently supports parametrization of Text Layers, Media Layers (including Image, Audio & Video Layers), and Solid Layers (Colors).

To learn more about best practices about layers check the Parametrization section and how to create the most versatile templates read the Projects section.


Renders are the final result of the Plainly workflow and they contain a resulting output video or GIF. Renders are created for a specific project when you choose a template and insert the data needed for the render. They show up in the Renders window, and from there you can preview and download them.


This section talks about projects, packing, creating & uploading, different states, etc.

To create a new project, you’ll need to upload the .zip archive containing the Adobe After Effects project file and all needed assets. Note that the size of the uploaded project(s) counts-in to your storage limits, defined by the Plainly package you are using.


To upload a project to Plainly, use the "Collect Files" option in After Effects. To do this, go to File > Dependencies > Collect Files.


Once you collected all files, create a .zip archive including the project file (.aep) and (Footage)/ folder.

Both the project file and the (Footage)/ folder must be at the root of the created .zip file.


Plainly has built-in support for all the Google open-source fonts. If you use custom fonts, include them in the archive for Plainly to use them. If you forget to add any custom font, it will be replaced by the default Arial font.

Other users don’t have the access to your fonts. Before rendering, all custom fonts for the specific project will be installed and removed after the rendering.


When you create your archive click on the "Upload new" button in the Projects tab. Finalize the upload, and a project will automatically be created. Right now Plainly will automatically name your project the same as the project file you uploaded. There isn’t a way to change this (yet).

Plainly analyzes the project first, to make sure everything works, and then let you create templates.

The current limit for the upload file size is 100MB.

Things to Consider

There is a list of things to do in After Effects before uploading the project to Plainly:

  • Use the "Reduce project" option to create much smaller project sizes. To do this, you need to know which compositions you want to parametrize. After that, select the compositions in the Project panel and go to File > Dependencies > Reduce project. This will delete all files that are not included in the compositions you have selected. This is a good way of cleaning up the project.

  • Save the project file according to the name you want to name the project in Plainly.

  • Name the compositions accordingly. If you don’t, you will have a lot of trouble finding them in Plainly.

To learn how to create the most versatile projects, read the Creating a Perfect After Effects Template section.


This section talks about different possibilities to parametrize a project using templates.

Creating a Template

The first step in creating templates is to choose a template name and the composition that will be used to render this template. Note that each template must define exactly one rendering composition which will be rendered.

Layers Parametrization

Once you select the rendering composition, you will need to select which layers you wish to change for this template. Plainly allows two types of parametrization, static and dynamic. Static means that a new value is defined directly in the template. For the dynamic ones, you provide parameters for the layers at the time of the render.

When you enter the parametrization window, Plainly will list all layers in the rendering composition you selected. Right now, we offer parametrization of text layers, image/audio/video layers, and the color of solid layers.


The left column will show you the layer name (as you named it in AE) and all compositions in which that layer exists. You will notice that some layers have multiple composition paths under their name - this happens when layers have the same names and values in multiple compositions. This will often happen when you duplicate compositions.


The right column will show you the current value of that layer. You’ll also have a chance to expand a preview of the layer in case of image, video, or audio.

Parametrizing a Layer

To parametrize a layer, click on it in the layer list, and an overlay will open.

Change in: This allows you to choose in which composition you want to parametrize this layer. This is great if you have a layer with the same name but in different compositions inside the rendering composition.

Static value: This allows you to set a static value for a layer that will be used for every render. This is particularly useful if you want to place a fixed value in each of your renders.

Dynamic value: This allows you to set up a dynamic value for a layer and provide different parameters for each render.

  • Display name: This is the name that the user will see in the Plainly generated render forms.

  • Parameter name: This is the name that you will use when calling the render API.

  • Default value: This is the value that will be used if you leave the parameter blank.

  • Mandatory: Turn this on if you want your renders to fail in case the parameter is not passed for this layer.

The Default value and Mandatory are mutually exclusive. You can only set the default value if mandatory is not checked, and then it will be used as a default value if a dynamic parameter has not been passed during the render. If mandatory is checked, then render will fail in case this parameter has not been passed during the call to the render.

Once you set everything up for this particular layer, click "Save".

The layer will now appear in the second tab "Parametrized layers" where you can have an overview of all layers you parametrized along with the important info about them. If you wish to delete a certain parametrized layer - click the recycle bin icon.

Once you are done with creating parametrized layers and wish to create the template, click "Save" on the bottom right.

Things to Consider

To make project parametrization easier, follow these suggestions:

  • Name your layers accordingly. If your project is a mess it will be very hard for you to find the correct layers easily.

  • If you want to find layers faster, create a prefix (ie. Edit-) and add it to every layer you want to parametrize while you are creating it in AE. Later on when in Plainly, just type Edit- in our search bar and you will find the correct layers much faster.

To learn how to create layers that will adapt to any type of content you provide, read the Creating a Perfect After Effects Template section.


This section provides a rendering guide.

Rendering is the process that outputs a video. Creating a new render in Plainly WebApp can be done from the Renders page, or the Template Details page. Both provide a Render button, which will guide you to the generated render form. There you can select what to render and fill out the needed parameters.

You can also render using API, you can find the API Reference documentation here:

We offer to render in .mp4 and .gif formats - these should be more than enough to cover all of your social media needs. Dimensions of the renders depend on the dimensions you set up in AE.

You can have multiple renders active. As you trigger rendering through our app or the API, Plainly will queue them, and they will appear in the Renders section from where you can download them.


Render times depend on the complexity of a project, and the dimensions of a video being rendered.

Every video successfully rendered counts-in to your rendering minutes limits, defined by the Plainly package you are using. Failed renders do not add to the limits, although this might change in the future, especially for the renders that fail on the render node and where actual render time has been spent.

Lowering Render Times

Here are some of the best practices when it comes to cutting down render times.

Cut down project files to as small as possible

Make sure to follow instructions from Projects section. Cutting down the size of project files will often lead to a faster render time.

Use as few effects and plugins as possible

Effects destroy render times. If speed is important to you, try lowering the amount of the effects/plugins to a minimum, or if it’s possible don’t use them at all.

Use as few expressions as possible

Expressions are also a killer for render times. Especially very complex expressions. After Effects needs to calculate the expression you set every frame, and if it’s a big one you bet it will slow down your renders.

Pre-render as much as possible

Pre-render is a process of rendering a certain composition as a .png sequence to lower render times. This works wonders for your renders. You can also use .mp4 to save space.

For example: If you use any of Trapcode plugins; pre-compose it; render that composition as a .png sequence and turn off the original layer. You just pre-rendered a composition.

This is a huge boost to your render times because AE doesn’t have to calculate heavy layers with complex effects or plugins on it, it just plays a .png sequence (or a .mp4).

When it’s possible to use vector files, don’t convert them into shapes

Shape layers are also heavy on After Effects. If you imported a complex shape from AI with Overlord, you might wanna use the vector file instead. It will give a big boost to your render times.

Resize all of the assets in the comp

If you use big pictures, they will also affect the render time. Try cropping all of the assets in your composition to the right dimensions, instead of using a 4k image or video in a 720p composition.

Cut down resolution if you don’t need it

If you are posting to social media, there is no need to use 2k or 4k videos. Research the best dimensions for videos and cut down the resolution if you see that your videos are too big.

Optimize your pre-comps

Before finalizing your project, check all pre-comps just to make sure that you don’t have unnecessary files in there. It’s very easy to overlook objects off-screen that will increase your render times. Check everything, clean up and optimize.

Creating a Perfect After Effects Template

This section provides the best practices and expressions to use to create After Effects templates that will look good and behave in the right way no matter what data you put in them.

There is a bunch of information about this online, these are some of our favorite tips and tricks for creating templates.

Text Layers

Multi-line Text

If your templates use big lines of text, you are probably using paragraph text (text that is bounded by an area) and it probably goes into multiple lines.

Your best chances in keeping this controlled are limiting the number of characters that the user inputs.

Create an area that the text should fill, and find a reasonable amount of characters that you think will cover all use cases. If you know all use cases that are then the best-case scenario because you can plan and design accordingly.

If you wish to keep the text centered, apply this expression to the anchor point of that text layer.

top = sourceRectAtTime().top;
left = sourceRectAtTime().left;
x = left + (sourceRectAtTime().width/2);
y = top + (sourceRectAtTime().height/2);

This will keep the text layer centered horizontally no matter how many characters you type in.


Single-Line Text

Single-line text is quite easier to control. This is how you make it scale down as it reaches the bounding box you create for it.

  • Create a solid layer with a short name that will be easy to reference later. Scale it down as needed and use this layer as a bounding box.

  • Add this expression to the scale property of the text layer you want to make dynamic.

text_width = thisLayer.sourceRectAtTime(time).width;
text_height = thisLayer.sourceRectAtTime(time).height;
rect_height = thisComp.layer("boundingbox").height*thisComp.layer("boundingbox").scale[1]/100-2;
rect_width = thisComp.layer("boundingbox").width*thisComp.layer("boundingbox").scale[0]/100-2;
sTemp = Math.min(rect_width/text_width*100, rect_height/text_height*100);
s = Math.min (100,sTemp);

You can also do it without these two lines:

sTemp = Math.min(rect_width/text_width*100, rect_height/text_height*100);
s = Math.min (100,sTemp);

But we set it up that way so the size of the text layer doesn’t go over 100% of the size we originally set.


Beware of the anchor point of the layer, make sure that it is horizontally centered as it will scale down from that point.

Multiple Single-Line Text Layers

If you use the method above to control multiple single-line texts, you will notice that each of them has its scale and that it can look ugly.

To fix this, you need to tweak the expression a bit so it will look for the scale of the other text layers and scale accordingly.

This will give you a nice consistent scale of text layers while keeping them in their bounding boxes.

Instead of using:

s = Math.min (100,sTemp);


s = Math.min (100,thisComp.layer("surname").transform.scale[0],sTemp);

This will allow you to look at the "surname" layer and its scale and scale accordingly. You can input as many layers as you wish in this expression.



Creating a Color Control Layer

Controlling colors is one of the most important things when making templates. Fortunately, there is a lot of ways to do this depending on the way your template will be used.

When working with Plainly you will need to use this way, so you can pass colors as a HEX value.

  • Create a control layer (solid, null) that will hold the FILL effect that will be later referenced.

  • Add an expression to the "Color" value of that fill effect. This expression will allow you to set colors by typing in the HEX value of that color in a text layer.

function hexToColor(theHex) {
    var r = theHex >> 16;
    var g = (theHex & 0x00ff00) >> 8;
    var b = theHex & 0xff;
    return [r/255,g/255,b/255,1]
hexToColor("0x" +thisComp.layer("color-primary").text.sourceText);

"color-primary" is the text layer that will be parametrized and that you will use to set up color for the fill effect.

  • Create a text layer that will serve as the color value. This layer doesn’t have any expressions. Pay attention that you name it properly, so it links to the expression on the "Color" value of that solid above.

  • A reference that "Color" value of the fill effect on every layer that you wish to be colored that way. This is just a matter of pick whipping the "Color" to each layer you want to be colored in that color.


You can create as many of these layers as you wish, just pay attention that each one of them has unique names so there aren’t any issues with expressions.

Later, when in the Plainly app, parametrize that text layer and pass the hex value of the color you want to use.

Coloring Text

Since text layers don’t have color values that you can access through expressions, the easiest way is to add a "Fill" effect to them and color them that way.

Coloring Solid Layers

Plainly supports this natively, so no need for any expressions here. If you use solid layers as backgrounds, you can parametrize them and change colors with the color pickers, you can also pass the HEX value if you wish.


One of the biggest issues when creating templates is the scaling of them. In a perfect world, all images are the same dimensions but this usually is not the case.

Luckily there is a preset that will automatically scale any image to the size of the comp that holds that image.

Here is a Dropbox link to that. Just install that preset and apply it to the image you want to parametrize.

When you apply it, you will have a couple of options in your "Effect Controls" panel so play a bit with that to achieve the perfect result.


Anything more?

Do you have any tips that we can add? Write them to and we will add them in!