How to use loose parts for self-directed play at home

Editor’s note: This post was updated on April 29, 2021.

For now, our days are still blending together like fingerpaint art: somewhat unpredictable, decently messy, with a healthy dose of fun thrown in.

And our children seem to have a lot of free time. So much free time that I find myself scouring the endless lists of activities, crafts, and online resources being shared for homebound children. There are some great ideas out there, yet I often find that my kids stay entertained longer when they engage in self-directed, open-ended play using objects from around our home.

These “loose parts” can be moved around, tinkered with, and redesigned. The wonderful thing about loose parts is that our homes are filled with them! Gather a few together and your child will gravitate towards play that’s self-directed and creative, possibly for hours at a time. It’s just what our kids need during this time of isolation and staying home.

How to encourage self-directed play using loose parts

“I’m so bored!” my daughter complains. I rattle off some activities for her to try: do an art project, play with the rabbit, or read a book. She looks at me with dissatisfaction. Sound familiar? We parents often feel compelled to help our children combat boredom, but when it comes to self-directed play, the less we interfere the better.

Here are some helpful ideas for encouraging your child to engage in self-directed play using found objects from around your home.

1. Give your child uninterrupted time

Children need plenty of uninterrupted time to become fully engaged in play. Try to avoid the temptation to interrupt your child with “teaching moments,” praise, corrections, or cautions (unless there is an actual risk of injury).


Related read: How to be a “lifeguard parent” and keep kids safe during risky play


2. Engage your child in meaningful conversation

Open-ended questions are a powerful way to encourage children to engage in self-directed play. Ask them open-ended questions about their magical world of play. Simply saying “Tell me about what you’ve made” can be a good opening for meaningful conversation that can help children develop their play and empower them with new ideas.

3. Go on a loose parts treasure hunt

If your child isn’t used to playing with loose parts, go from room to room and gather up a box or basket of items with your child. Make it fun, like you’re going on a treasure hunt together. Check out cupboards, inspect drawers, and scour closets. Follow your child’s lead and see what interests them.

4. Make a loose parts surprise box

Gather up a variety of loose parts in a box (check out the list of suggestions below). The next time your child complains about being bored, give them the box without any instructions.

5. Place loose parts randomly around your home

Leave empty boxes in the corner of a room, a pile of blankets under your dining table, or a bin filled with random items like yarn, buttons, noodles, spoons, and containers on the floor. Don’t mention or give specific instructions about the random things lying around.

Safe play with loose parts

Loose parts come in all shapes and sizes, and that’s what makes them so fun. However, it’s important to always keep your child’s safety in mind with loose parts. Small objects (beads, buttons, beans) can be a choking hazard for young children and sharp objects (scissors, nails) are better suited for older children or may require some adult supervision. If in doubt, keep it out of your child’s hands.

How to find loose parts around your home

Your home is filled with all sorts of loose parts! To help you find them, here’s a list of my children’s favourite household items to play with, along with the types of play they encourage:

From the linen closet: Sheets, blankets, towels, pillows, face clothes, table clothes, napkins, and rags.

Type of play: Encourages building forts and dressing up.

From the kitchen drawers: Bowls, baking tins, eating utensils, mixing and serving utensils, funnels, sieve, canning jar rings, elastics, and aluminum foil.

Type of play: Add a few pantry items for cooking or kitchen play, add water for pouring and mixing, and add rags for cleaning play.

From the food pantry: Dried beans, lentils, noodles, cans of food, and snacks.

Type of play: Add string to encourage noodle weaving, bowls and spoons for mixing, or a lay out a blanket for an impromptu picnic. 

From the bathroom: Toilet paper (depending on your stockpile), curtain rings, shower curtains, hair elastics, scrunchies.

Type of play: Toilet paper towers, using curtains and elastic to create forts or costumes. 

From the craft cupboard: String, yarn, buttons, beads, pompoms, popsicle sticks, pipe cleaners, ribbon, paper, glue, and scissors.

Type of play: Self-directed art and crafts, creating props for play. 

From the recycling bin: Boxes, newspaper, bits of paper or cardboard, paper tubes, milk jugs, yogurt containers, metal cans, bottle caps, cardboard tubes, corks, egg cartons, and rubber bands.

Type of play: Building creative worlds, self-directed art.

From the laundry room: Clothespins, single socks, clean detergent cups, rags, and piles of clean (unfolded!) laundry.

Type of play: Laundry play. Add string for hanging laundry or a bin of soapy water to wash socks. Add water for pouring and mixing play.

From the toy bin: Wooden blocks, marbles, balls, and other open-ended toys.

Type of play: Building creative worlds, stacking and rolling play. 

Even more ways to play!

If you have access to a backyard or a nature space that isn’t filled with people then you may want to encourage your child to gather and play with loose parts outside. Also, if you’re looking for more ideas to encourage self-directed and active play at home be sure to check Active for Life’s new Facebook group Active at Home: Fun ideas to get kids moving.

Leave a Reply

Your email address will not be published. Required fields are marked *

[gravityforms id=12 title="false" description="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_12' ><div id='gf_12' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_12' id='gform_12' action='/loose-parts-self-directed-play/#gf_12' > <div class='gform_body gform-body'><ul id='gform_fields_12' class='gform_fields top_label form_sublabel_below description_below'><li id="field_12_6" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible" ><label class='gfield_label' for='input_12_6' >Nom</label><div class='ginput_container ginput_container_text'><input name='input_6' id='input_12_6' type='text' value='' class='large' placeholder='Votre nom' aria-invalid="false" /> </div></li><li id="field_12_7" class="gfield email gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" ><label class='gfield_label' for='input_12_7' >Courriel<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_7' id='input_12_7' type='text' value='' class='large' placeholder='Votre adresse courriel' aria-required="true" aria-invalid="false" /> </div></li><li id="field_12_9" class="gfield hidden scroll-subscriber field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_12_9' >Scroll Subscriber</label><div class='ginput_container ginput_container_text'><input name='input_9' id='input_12_9' type='text' value='' class='medium' aria-invalid="false" /> </div></li><li id="field_12_8" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible" ><label class='gfield_label gfield_label_before_complex' >Je suis un éducateur, un entraîneur ou un animateur en loisirs</label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_12_8'><li class='gchoice gchoice_12_8_1'> <input class='gfield-choice-input' name='input_8.1' type='checkbox' value='Oui, veuillez aussi m’envoyer l’infolettre semestrielle d’Actif pour la vie pour les professionnels.' id='choice_12_8_1' /> <label for='choice_12_8_1' id='label_12_8_1'>Oui, veuillez aussi m’envoyer l’infolettre semestrielle d’Actif pour la vie pour les professionnels.</label> </li></ul></div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_12' class='gform_button button' value='Abonnez-vous à notre bulletin' onclick='if(window["gf_submitting_12"]){return false;} window["gf_submitting_12"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_12"]){return false;} window["gf_submitting_12"]=true; jQuery("#gform_12").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=12&amp;title=&amp;description=&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_12' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='12' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_12' value='WyJbXSIsImU4MmE1N2RiNzRiMTQ1ZjVhOGQ3OWQwZmVkOTFkNjRiIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_12' id='gform_target_page_number_12' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_12' id='gform_source_page_number_12' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js" name="ak_js" value="126"/><script>document.getElementById( "ak_js" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_12' id='gform_ajax_frame_12' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script type='text/javascript'>gform.initializeOnLoaded( function() {gformInitSpinner( 12, 'https://activeforlife.com/content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_12').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_12');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_12').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_12').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_12').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_12').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_12').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_12').val();gformInitSpinner( 12, 'https://activeforlife.com/content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [12, current_page]);window['gf_submitting_12'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_12').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_12').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [12]);window['gf_submitting_12'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_12').text());}, 50);}else{jQuery('#gform_12').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [12, current_page]);} );} );</script>
[gravityforms id=11 title="false" description="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_11' ><div id='gf_11' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_11' id='gform_11' action='/loose-parts-self-directed-play/#gf_11' > <div class='gform_body gform-body'><ul id='gform_fields_11' class='gform_fields top_label form_sublabel_below description_below'><li id="field_11_2" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible" ><label class='gfield_label' for='input_11_2' >Name</label><div class='ginput_container ginput_container_text'><input name='input_2' id='input_11_2' type='text' value='' class='large' placeholder='Your name' aria-invalid="false" /> </div></li><li id="field_11_1" class="gfield email gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" ><label class='gfield_label' for='input_11_1' >Email<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_11_1' type='text' value='' class='large' placeholder='Your email address' aria-required="true" aria-invalid="false" /> </div></li><li id="field_11_4" class="gfield hidden scroll-subscriber field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_11_4' >Scroll Subscriber</label><div class='ginput_container ginput_container_text'><input name='input_4' id='input_11_4' type='text' value='' class='medium' aria-invalid="false" /> </div></li><li id="field_11_3" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible" ><label class='gfield_label gfield_label_before_complex' >I&#039;m an educator, coach, or rec leader</label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_11_3'><li class='gchoice gchoice_11_3_1'> <input class='gfield-choice-input' name='input_3.1' type='checkbox' value='Yes, please also send me the biannual AfL Pro Newsletter for educators, coaches and rec leaders' id='choice_11_3_1' /> <label for='choice_11_3_1' id='label_11_3_1'>Yes, please also send me the biannual AfL Pro Newsletter for educators, coaches and rec leaders</label> </li></ul></div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_11' class='gform_button button' value='Subscribe now' onclick='if(window["gf_submitting_11"]){return false;} window["gf_submitting_11"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_11"]){return false;} window["gf_submitting_11"]=true; jQuery("#gform_11").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=11&amp;title=&amp;description=&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_11' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='11' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_11' value='WyJbXSIsImU4MmE1N2RiNzRiMTQ1ZjVhOGQ3OWQwZmVkOTFkNjRiIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_11' id='gform_target_page_number_11' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_11' id='gform_source_page_number_11' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js" name="ak_js" value="122"/><script>document.getElementById( "ak_js" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_11' id='gform_ajax_frame_11' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script type='text/javascript'>gform.initializeOnLoaded( function() {gformInitSpinner( 11, 'https://activeforlife.com/content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_11').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_11');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_11').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_11').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_11').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_11').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_11').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_11').val();gformInitSpinner( 11, 'https://activeforlife.com/content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [11, current_page]);window['gf_submitting_11'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_11').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_11').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [11]);window['gf_submitting_11'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_11').text());}, 50);}else{jQuery('#gform_11').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [11, current_page]);} );} );</script>