Visual Poetry with Scratch
Combining handmade art, words, and creative coding

This activity invites students to explore the border between poetry, visual art, and programming by creating animated visual poems in Scratch. It values the importance of giving time for imagination and of nurturing aesthetic sensitivity. Rather than using words only for reading, students use them as living visual elements: letters and words move across the screen, transform their meaning through motion, and interact with colours, shapes, images, and space.
The activity is especially suitable for upper primary and lower secondary education. It combines language arts, visual expression, and creative coding in a playful and poetic way. Students are encouraged to think not only about what words mean, but also about how they look, how they move, and how animation can create metaphor.
An important part of the proposal is the dialogue between manual artistic work and digital programming. Instead of beginning directly on the computer, students can first create visual elements with their hands (painting, cutting, composing, and experimenting with materials) and then bring those handmade creations into Scratch. In this way, coding does not replace artistic practice, but extends it into movement, time, and interaction.
Below are two simple examples that can serve as inspiration.
Poem 1: Cloud

In this first example, the Catalan word núvol (“cloud”) becomes both text and image at the same time. The letters n, ú, v, o, l move together across a blue background, forming a soft animated cluster that resembles a cloud floating through the sky. This piece is inspired by a work by Erik Winkowski, whose approach suggests fertile possibilities for turning words into visual and moving forms.
This is a simple but powerful example of visual poetry: the word does not just describe a cloud, it becomes one. Through movement, spacing, and rhythm, students can discover how typography itself can be expressive. Small changes in speed, direction, position, or transparency can make the cloud feel calm, heavy, playful, or windy.
To create this effect, each letter is programmed as an individual sprite with two very simple scripts. The first script controls the horizontal movement. When the green flag is clicked, the sprite is given a small size and placed at a specific starting position on the left side of the stage. Then, inside a forever loop, it moves one step at a time towards the right. A conditional block constantly checks the sprite’s horizontal position: if the letter reaches or passes the right edge of the stage, it is immediately sent back to the far left side. This reset creates an endless cycle, so the letter keeps travelling across the screen again and again.

Although the code is very short, it introduces an important programming idea: instead of building a complicated animation timeline, students can generate continuous motion through a loop and a simple positional condition. Because each letter can start from a slightly different place and can be arranged in relation to the others, the whole word begins to behave like a moving visual form rather than a fixed piece of text.
The second script is optional, but it adds a significant poetic quality to the animation. Inside another forever loop, the program repeatedly chooses a random number, either 0 or 1. If the result is 1, the sprite changes its vertical position slightly upward; otherwise, it moves slightly downward. In other words, the letter is constantly nudged a little bit up or a little bit down. This produces a subtle vibration or trembling effect.

That tiny random oscillation makes the movement feel less rigid and more organic. Without it, the letters simply slide horizontally, which already works, but can look too mechanical. With the second script, the cloud seems to breathe, tremble, or be gently shaped by the wind. It is also a good way to introduce randomness in Scratch, showing students how a very small dose of chance can transform the visual atmosphere of a piece.
This poem also offers a very interesting opportunity to combine hands-on visual arts with programming. Before working in Scratch, students can paint the word núvol by hand with a brush and white paint on coloured cardboard. Then they can photograph the painted word, cut out each letter digitally, remove the background, and save each one as a PNG image. Once imported into Scratch, those handmade letters can become animated sprites. This process gives real importance to the artistic preparation of the materials: the final digital poem is not made only with code, but with painted textures, gestures, and visual decisions that come from manual work.

In this way, the activity helps students understand that creative coding can grow out of physical making. The poetic cloud is built not only through loops and coordinates, but also through brushstrokes, composition, and the transformation of a handmade artwork into an animated digital scene.
Poem 2: Breath

In the second example, the Catalan word alè (“breath”) moves slowly from one side of the stage to the other, passing above the image of a human figure lying down. Beneath the figure, one of my own lines appears: “la primavera respira lenta dins meu” (“spring breathes slowly inside me”). During the animation, this verse trembles slightly, reinforcing the sense of fragile life, inner movement, and quiet transformation. This poem is inspired by a work by Daniel Barreto, whose imagery opens a suggestive path for exploring the relationship between body, breath, and blooming.
Whenever the word alè passes over the body, flowers begin to bloom. When it moves away, that flowering presence fades again. The result is a very simple visual poem, but one charged with symbolic resonance: breath is not represented as something merely physiological, but as a force that awakens, touches, and briefly brings the body into blossom.
The animation is built from a few simple interactions between sprites. The word alè is programmed as an independent sprite that moves continuously across the stage. When the green flag is clicked, it is placed near the left edge, given a semi-transparent ghost effect, and reduced in size so that it feels light and delicate. Its rotation style is set to “don’t rotate”, which means that even when it touches the edge and changes direction, the word always remains readable rather than flipping upside down.

Inside a forever loop, the sprite moves a few steps at a time and uses the if on edge, bounce block to travel back and forth across the screen. A final instruction continuously changes its brightness effect to a random value, creating subtle fluctuations of light. This gives the word a flickering, unstable presence, as if breath were something delicate, luminous, and constantly changing rather than fixed or solid.
Another simple script controls the flowers. At the start, each flower sprite is placed in a specific position, given a relatively high ghost effect so that it appears faint, and assigned an initial costume. Then, inside a forever loop, the program checks the distance to the alè sprite. If that distance becomes smaller than a certain value, the flower begins a short animation: it cycles through several costumes, with a brief wait between each one, so that it seems to open gradually like a blossom.

This is a very elegant use of a conditional structure in Scratch. The flower does not react to a key press or a click, but to proximity. In other words, what matters is spatial relation: the flower responds when breath comes near. This makes the code conceptually rich as well as visually effective, because students can see how a poetic idea (breath causing flowers to bloom) can be translated into a programmable interaction based on distance, timing, and costume changes.
The verse under the human figure adds another layer to the composition. Its slight trembling movement echoes the vibration of breath and helps unify text, body, and animation into a single poetic atmosphere. In this way, the screen does not function simply as a place where words are displayed, but as a living poetic space in which language, image, and motion continuously shape one another.

This second poem also lends itself beautifully to a combination of manual art-making and digital programming. Before creating the animation in Scratch, students can paint a series of flowers by hand, showing different stages of growth: for example, a small stem, then a stem with leaves, and finally a stem with leaves and a flower in bloom. These painted images can then be photographed, cleaned up, and imported as separate costumes for the flower sprite. Once inside Scratch, the handmade drawings can be animated so that the flower appears to grow whenever the word alè comes near.
Here again, the activity gains depth from the meeting of two modes of creation. On the one hand, students work materially with paint, paper, colour, texture, and observation. On the other hand, they use code to organise movement, interaction, timing, and transformation. The result is not simply a programming exercise with decorative images, but a genuinely hybrid creative process in which artistic handwork and computational thinking enrich one another.
Why this activity matters
Visual poetry with Scratch helps students experience language in a broader and more creative way. They are not only writing texts, but designing poetic experiences. At the same time, they develop computational thinking by working with sequencing, repetition, conditionals, coordinates, randomness, sensing, and interaction.
Just as importantly, the activity highlights the value of combining manual artistic practice with digital creation. Painting letters, flowers, or other visual elements by hand before animating them in Scratch allows students to see code as a continuation of artistic expression rather than as something separate from it. The computer becomes a space where handmade forms can acquire rhythm, behaviour, and new layers of meaning.
Because the activity is open-ended, it can easily be adapted to different ages and contexts. Some students may create very simple animations based on one moving word, while others may develop more complex poetic scenes with sound, image, and interactivity. In all cases, the goal is to use code as a medium for expression, imagination, and meaning-making.