{"id":12466,"date":"2023-10-18T07:56:47","date_gmt":"2023-10-18T07:56:47","guid":{"rendered":"https:\/\/new-blog.artlist.io\/blog\/?p=12466"},"modified":"2024-01-01T12:21:42","modified_gmt":"2024-01-01T12:21:42","slug":"how-to-record-hands-free-on-tiktok","status":"publish","type":"post","link":"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/","title":{"rendered":"How to record hands-free on TikTok"},"content":{"rendered":"<h2>What is hands-free recording on TikTok?<\/h2>\n<p>Did you know that you can record videos hands-free on TikTok? Just like it sounds, you can record videos on your phone without using your hands right from the TikTok app. This way, you can more easily make videos without having to hold down the record button the entire time.<\/p>\n<p>So how does the hands-free method of recording work? A TikTok creator simply sets their phone at an angle to record (by either holding the phone, using a tripod, or leaning the phone against something).<\/p>\n<p>There are two different ways to record without the use of your hands, which we\u2019ll explore later on in the blog in our step-by-step guide to hands-free recording.<\/p>\n<h3>How hands-free recording helps users get more creative<\/h3>\n<p>Having the ability to record hands-free on TikTok really allows users to flex their creativity. When you don\u2019t need to hold the phone while recording, you can more easily shoot videos from different angles.<\/p>\n<p>For example, when I record a dance video on TikTok, I like to prop my phone up on the counter or against an object so I\u2019m far enough away from the camera for the audience to see my entire body. I also use this method when I want to walk into the frame of the video using the timer feature. Having this flexibility makes videos much more interactive and fun for your audience!<\/p>\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"177\" class=\"elementor elementor-177\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a82efe9 elementor-section-full_width cta-middle external elementor-section-height-default elementor-section-height-default\" data-id=\"a82efe9\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5c05932\" data-id=\"5c05932\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-052a2be elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"052a2be\" data-element_type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"45\" height=\"13\" viewBox=\"0 0 45 13\" fill=\"none\"><path d=\"M13.7128 4.45274C13.2137 4.45274 12.7223 4.56022 12.2694 4.75984C11.8701 4.93643 11.5477 5.25889 11.3634 5.65046V9.85017H9.58984V2.91719H11.2175V4.39899C11.3327 4.16866 11.4786 3.95368 11.6551 3.75406C11.8164 3.5698 12.0006 3.40089 12.2003 3.25501C12.3845 3.12449 12.5765 3.00933 12.7914 2.93255C12.9757 2.86345 13.1753 2.82506 13.3673 2.81738H13.5823C13.6283 2.81738 13.6744 2.82506 13.7205 2.83274L13.7128 4.45274Z\" fill=\"#FFDA2A\"><\/path><path d=\"M19.1865 9.48966C18.9024 9.6125 18.6106 9.71999 18.3112 9.80445C17.958 9.91193 17.5972 9.96568 17.2287 9.96568C16.9906 9.96568 16.7603 9.93497 16.53 9.87354C16.3227 9.8198 16.1307 9.71231 15.9618 9.57411C15.7929 9.42824 15.6624 9.25165 15.5703 9.04435C15.4628 8.79867 15.4167 8.52995 15.4244 8.26123V4.27649H14.5107V2.91754H15.4244V0.667969H17.1979V2.91754H18.6567V4.27649H17.1979V7.66236C17.1979 7.90805 17.2594 8.08464 17.3899 8.18445C17.5204 8.29194 17.6893 8.34568 17.8582 8.338C18.0425 8.338 18.2268 8.30729 18.4033 8.24587C18.5799 8.18445 18.7181 8.1307 18.8256 8.08464L19.1865 9.48966Z\" fill=\"#FFDA2A\"><\/path><path d=\"M19.9315 0.191406H21.7051V7.62343C21.7051 7.87679 21.7665 8.07642 21.8893 8.22229C22.0275 8.36817 22.2195 8.44495 22.4191 8.43727C22.5342 8.43727 22.6571 8.41424 22.7723 8.38352C22.8951 8.35281 23.0179 8.30675 23.1331 8.253L23.3711 9.60428C23.1024 9.72712 22.826 9.81926 22.5342 9.86532C22.2502 9.92674 21.9661 9.95745 21.6743 9.95745C21.1215 9.95745 20.6916 9.81158 20.3845 9.51215C20.0774 9.21272 19.9315 8.79812 19.9238 8.253L19.9315 0.191406Z\" fill=\"#FFDA2A\"><\/path><path d=\"M24.2998 9.84997V2.91699H26.0734V9.84997H24.2998Z\" fill=\"#FFDA2A\"><\/path><path d=\"M26.1887 1.08236C26.2041 1.35876 26.0966 1.6198 25.8893 1.80407C25.6973 1.98066 25.4516 2.08047 25.1906 2.07279C24.9296 2.08047 24.6685 1.98066 24.4766 1.80407C24.277 1.6198 24.1695 1.35108 24.1771 1.08236C24.1771 0.767578 24.277 0.521892 24.4766 0.345304C24.6685 0.168717 24.9296 0.0689069 25.1906 0.0765846C25.4516 0.0765846 25.6973 0.168717 25.8893 0.345304C26.0889 0.521892 26.1887 0.759901 26.1887 1.08236Z\" fill=\"#FFDA2A\"><\/path><path d=\"M30.1276 9.98085C29.5441 9.98085 28.9683 9.88872 28.4232 9.70446C27.9011 9.53555 27.4174 9.26683 26.9951 8.91365L27.6554 7.80038C28.0393 8.07678 28.4539 8.30711 28.8915 8.4837C29.2754 8.63725 29.6823 8.71403 30.0892 8.71403C30.4424 8.71403 30.7188 8.64493 30.9261 8.51441C31.1257 8.39157 31.2409 8.17659 31.2332 7.94626C31.2409 7.70825 31.095 7.49328 30.88 7.40114C30.5038 7.23991 30.1123 7.10939 29.713 7.0019C29.26 6.87906 28.8762 6.76389 28.5614 6.64873C28.285 6.55659 28.0316 6.42607 27.7936 6.25716C27.6093 6.12664 27.4635 5.95773 27.3713 5.75044C27.2792 5.53546 27.2331 5.30513 27.2408 5.06712C27.2331 4.73698 27.3022 4.41451 27.4481 4.11508C27.5863 3.83869 27.7782 3.58532 28.0239 3.39338C28.285 3.18608 28.5767 3.03253 28.8915 2.93272C29.237 2.82523 29.6055 2.77148 29.9664 2.77148C30.4578 2.77148 30.9568 2.84058 31.4252 2.99414C31.8858 3.14769 32.3158 3.39338 32.6766 3.72352L31.9626 4.7984C31.6478 4.56039 31.3023 4.36077 30.9338 4.21489C30.619 4.09205 30.2889 4.03063 29.951 4.03063C29.69 4.02295 29.429 4.08437 29.1986 4.21489C28.999 4.33774 28.8915 4.53736 28.8915 4.81375C28.8838 4.92124 28.9145 5.02873 28.9683 5.12086C29.0297 5.213 29.1065 5.2821 29.1986 5.33584C29.3291 5.41262 29.4673 5.46636 29.6132 5.51243C29.7821 5.56617 29.9971 5.62759 30.2581 5.68901C30.7342 5.81186 31.1411 5.9347 31.4789 6.05754C31.7783 6.15735 32.0547 6.30323 32.3158 6.47982C32.5154 6.61802 32.6766 6.80996 32.7918 7.03261C32.8993 7.26294 32.953 7.52399 32.9453 7.77735C32.9453 8.45299 32.692 8.99043 32.1929 9.38199C31.6708 9.78891 30.9952 9.98085 30.1276 9.98085Z\" fill=\"#FFDA2A\"><\/path><path d=\"M38.0812 9.48966C37.7971 9.6125 37.5053 9.71999 37.2059 9.80445C36.8527 9.91193 36.4919 9.96568 36.1233 9.96568C35.8853 9.96568 35.655 9.93497 35.4323 9.87354C35.225 9.8198 35.0331 9.71231 34.8642 9.57411C34.6953 9.42824 34.5647 9.25165 34.4726 9.04435C34.3651 8.79867 34.3191 8.52995 34.3267 8.26123V4.27649H33.4131V2.91754H34.3267V0.667969H36.1003V2.91754H37.5591V4.27649H36.1003V7.66236C36.1003 7.90805 36.1617 8.08464 36.2922 8.18445C36.4228 8.29194 36.5917 8.34568 36.7606 8.338C36.9448 8.338 37.1291 8.30729 37.3057 8.24587C37.4823 8.18445 37.6205 8.1307 37.728 8.08464L38.0812 9.48966Z\" fill=\"#FFDA2A\"><\/path><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.43194 1.08203H5.20549L8.62975 8.48334V9.85765C7.24776 9.91907 5.80435 9.94979 4.31487 9.94979C2.8254 9.94979 1.38199 9.91907 0 9.85765V8.48334L3.43194 1.08203ZM1.90407 8.39121C2.71023 8.41424 3.51639 8.42192 4.31487 8.42192C5.12103 8.42192 5.92719 8.40657 6.72567 8.39121L4.31487 3.18572L1.90407 8.39121Z\" fill=\"#FFDA2A\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-6c15e46 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"6c15e46\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-0da648c\" data-id=\"0da648c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-11cf88e elementor-widget elementor-widget-heading\" data-id=\"11cf88e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Get unlimited royalty-free sound effects<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-1b6f1e0\" data-id=\"1b6f1e0\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7da4dae elementor-mobile-align-justify elementor-align-justify elementor-widget__width-initial external-link-event event-midpage-startfree elementor-widget elementor-widget-button\" data-id=\"7da4dae\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href="\&quot;https:\/\/artlist.io\/start-now\/?utm_source=blog&#038;utm_medium=middlebanner\&quot;">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-text\">Start  Free Now<\/span>\n\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f707132 elementor-mobile-align-justify elementor-align-justify elementor-widget__width-initial external-link-event event-midpage-pricing elementor-widget elementor-widget-button\" data-id=\"f707132\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href="\&quot;https:\/\/artlist.io\/page\/pricing\/max\/?utm_source=blog&#038;utm_medium=middlebanner\&quot;">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-text\">Pricing<\/span>\n\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<h2>Advantages of using hands-free recording<\/h2>\n<p>There are several advantages to using hands-free recording on TikTok\u2014all of which will enhance your creativity and result in more interactive and engaging videos for your audience.<\/p>\n<h3>Filming solo<\/h3>\n<p>The most obvious advantage is being able to film yourself solo without needing someone else present to hold your phone. This also allows you to better multitask and move around as needed while recording. Once you\u2019ve mastered the art of recording solo, you\u2019ll be well on your way to producing quality content on a regular basis.<\/p>\n<h3>Setup<\/h3>\n<p>When your hands are freed up, it allows you to set the scene and get into your element before you start recording. This is especially useful when shooting long-shot videos such as demos, dance routines, or comedy sketches because it allows the viewer to see the full scope of what\u2019s happening in the video. To obtain the highest quality recording (especially for talking head videos), I like to use a ring light for better lighting with a built-in smartphone tripod.<\/p>\n<h3>Timing<\/h3>\n<p>One of my favorite TikTok features is the timer. In fact, I use it almost every single time I record a video. In my opinion, this is the easiest way to record your content hands-free. You have the option to set the timer to start either 3 or 10 seconds after you press record. I love this option because it serves as sort of a countdown and gives me the prep time I need before I start talking or singing on camera.<\/p>\n\n    <div class=\"clipsContainer\" id=\"69d07a3481d69\"><\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n\n            if(\"footage\" == 'footage') {\n                if(\"639889\" == '') { \/\/ if this is a request for multiple clips by attributes\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query ClipList($page: Int, $sortType: Int, $categoryIds: String, $searchTerm: String) {\n\t\t\t\t\t\t\t\tclipList(page: $page, sortType: $sortType, categoryIds: $categoryIds, searchTerm: $searchTerm) {\n\t\t\t\t\t\t\t\t  exactResults  {\n\t\t\t\t\t\t\t\t\tclipPath\n\t\t\t\t\t\t\t\t\tclipNameForUrl\n\t\t\t\t\t\t\t\t\tid\n\t\t\t\t\t\t\t\t\tisNew\n\t\t\t\t\t\t\t\t\tfilmMakerDisplayName\n\t\t\t\t\t\t\t\t\timageUrl\n\t\t\t\t\t\t\t\t\tthumbnailUrl\n\t\t\t\t\t\t\t\t\twidth\n\t\t\t\t\t\t\t\t\tvideoUrl\n\t\t\t\t\t\t\t\t\trawFileExt\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                            variables: `{\n\t\t\t\t\t\t\t\t\"page\": 1,\n\t\t\t\t\t\t\t\t\"sortType\": 1,\n\t\t\t\t\t\t\t\t\"categoryIds\": null,\n\t\t\t\t\t\t\t\t\"searchTerm\": \"\"\n\t\t\t\t\t\t\t}`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('footage list: ', res);\n                            var data = res.data.clipList.exactResults;\n                            if ($(\"#69d07a3481d69\").length && data.length > 0) {\n                                createClipsGrid(data, \"69d07a3481d69\");\n                            } else if ($(\"#69d07a3481d69\").length && data.length == 0) {\n                                $(\"#69d07a3481d69\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                } else if(\"639889\" !== '') { \/\/ if this is a request for a specific clip by id\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query Clip($clipId: Int!) {\n\t\t\t\t\t\t\t\tclip(id: $clipId) {\n\t\t\t\t\t\t\t\t\tclipPath\n\t\t\t\t\t\t\t\t\tclipNameForUrl\n\t\t\t\t\t\t\t\t\tid\n\t\t\t\t\t\t\t\t\tisNew\n\t\t\t\t\t\t\t\t\tfilmMakerDisplayName\n\t\t\t\t\t\t\t\t\timageUrl\n\t\t\t\t\t\t\t\t\tthumbnailUrl\n\t\t\t\t\t\t\t\t\twidth\n\t\t\t\t\t\t\t\t\tvideoUrl\n\t\t\t\t\t\t\t\t\trawFileExt\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                            variables: `{\n\t\t\t\t\t\t\t\t\"clipId\": 639889\t\t\t\t\t\t\t}`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('specific footage: ', res);\n                            var data = res.data.clip;\n                            if ($(\"#69d07a3481d69\").length && data !== '') {\n                                createClipsGrid(data, \"69d07a3481d69\");\n                            } else if ($(\"#69d07a3481d69\").length && data.length == '') {\n                                $(\"#69d07a3481d69\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                }\n            } else if(\"footage\" == 'templates') {\n                if(\"639889\" === '') {\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query TemplatesList($payload: TemplatesByTermSearchPayload!) {\n                                templatesList(payload: $payload) {\n                                    nameForUrl\n                                    id\n                                    name\n                                    isNew\n                                    artistName\n                                    thumbnailUrl\n                                    previewVideoFileUrl\n                                }\n                            }`,\n                            variables: `{\n                                \"payload\": {\n                                    \"page\": 1,\n                                    \"take\": 2,\n                                    \"sortBy\": \"1\",\n                                    \"categories\": null,\n                                    \"searchTerms\": \"\"\n                                }\n                            }`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('templates list: ', res);\n                            var data = res.data.templatesList;\n                            if ($(\"#69d07a3481d69\").length && data.length > 0) {\n                                createClipsGrid(data, \"69d07a3481d69\");\n                            } else if ($(\"#69d07a3481d69\").length && data.length == 0) {\n                                $(\"#69d07a3481d69\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                    } else if(\"639889\" !== '') {\n                    $.ajax({\n                        method: \"POST\",\n                        url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                        contentType: \"application\/json\",\n                        data: JSON.stringify({\n                            query: `query Template($ids: [String!]!, $page: Int!, $take: Int!) {\n\t\t\t\t\t\t\t\ttemplatesByIds(ids: $ids, page: $page, take: $take) {\n\t\t\t\t\t\t\t\t\tnameForUrl\n                                    id\n                                    name\n                                    isNew\n                                    artistName\n                                    thumbnailUrl\n                                    previewVideoFileUrl\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                            variables: `{\n                                \"ids\": [\"639889\"],\n                                \"page\": 1,\n                                \"take\": 1\n\t\t\t\t\t\t\t}`,\n                        })\n                    }).done(function (res) {\n                        if(res == '') {\n                            console.log('none');\n                        } else {\n                            console.log('specific template: ', res);\n                            var data = res.data.templatesByIds[0];\n                            if ($(\"#69d07a3481d69\").length && data !== '') {\n                                createClipsGrid(data, \"69d07a3481d69\");\n                            } else if ($(\"#69d07a3481d69\").length && data.length == '') {\n                                $(\"#69d07a3481d69\").empty().append('<div class=\"noClipsError\">No clips were found.<\/div>');\n                            }\n                        }\n                    });\n                }\n            }\n\n            function createClipsGrid(data, clipsContainerId){\n                const container = $(\"#\" + clipsContainerId);\n                let playerSrc = '';\n\n                $.each(data, function(index, clip) {\n                    if(\"639889\" !== '') { \/\/ if this is a request for a specific clip by id - then the data is not an array of clips but only one clip and that's why the \"clip\" variable is actually the \"data\"\n                        index = 0\n                        clip = data;\n                    }\n                    if ((index) < 2) {\n                        \/\/ clip container\n                        const clipContainer = $(\"<div>\").addClass(\"clipContainer \");\n                        \/\/ new badge\n                        if (clip.isNew) {\n                            clipContainer.append('<span class=\"isNewBadge\">NEW<\/span>');\n                        }\n                        \/\/ video\n                        let videoElement = document.createElement('video');\n                        videoElement.setAttribute('playsinline', '');\n                        videoElement.setAttribute('webkit-playsinline', '');\n                        videoElement.setAttribute('x5-playsinline', '');\n                        videoElement.setAttribute('preload', 'auto');\n                        \n                        clipContainer.append(videoElement);\n                        \/\/ clip name and artist name\n                        let clipName = '';\n                        let artistName = '';\n                        if(\"footage\" == 'footage') {\n                            clipName = clip.clipNameForUrl;\n                            clipName = clipName.replace(\/-\/g, \", \");\n                            clipName = $(\"<a>\").addClass(\"clipName\").attr(\"href\", \"https:\/\/artlist.io\/stock-footage\/clip\/\" + clip.clipNameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").text(clipName);\n                            artistName = $(\"<div>\").addClass(\"artistName\").text('By ' + clip.filmMakerDisplayName + '');\n                        } else if(\"footage\" == 'templates') {\n                            clipName = $(\"<a>\").addClass(\"clipName\").attr(\"href\", \"https:\/\/artlist.io\/video-templates\/\" + clip.nameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").text(clip.name);\n                            artistName = $(\"<div>\").addClass(\"artistName\").text('By ' + clip.artistName + '');\n                        }\n                        const clipNames = $(\"<span>\").addClass(\"clipNames\").append(clipName, artistName);\n                        \/\/ download button\n                        let clipDownload = '';\n                        if(\"footage\" == 'footage') {\n                            clipDownload = $(\"<a>\").addClass(\"clipDownload\").attr(\"href\", \"https:\/\/artlist.io\/stock-footage\/clip\/\" + clip.clipNameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").html('<i class=\"icon download white\"><\/i>');\n                        } else if(\"footage\" == 'templates') {\n                            clipDownload = $(\"<a>\").addClass(\"clipDownload\").attr(\"href\", \"https:\/\/artlist.io\/video-templates\/\" + clip.nameForUrl + \"\/\" + clip.id + \"?download=1&utm_source=blog\").attr(\"target\", \"_blank\").html('<i class=\"icon download white\"><\/i>');\n                        }\n                        \/\/ overlay\n                        const overlay = $(\"<div>\").addClass(\"overlay\");\n                        overlay.append(clipNames, clipDownload);\n\n                        \/\/ APPEND ALL ELEMENTS INTO AUDIO PLAYER CONTAINER\n                        clipContainer.append(videoElement, overlay);\n\n                        \/\/ if this is a preview of only one specific clip (by id)\n                        if(\"639889\" !== '') {\n                            $(container).addClass(\"clipContainerSingular\")\n                        }\n\n                        \/\/ append audio player container into main playlist container\n                        container.append(clipContainer[0]);\n\n                        if(\"footage\" == 'footage') {\n                            playerSrc =  clip.clipPath;\n                        } else if(\"footage\" == 'templates') {\n                            playerSrc =  clip.previewVideoFileUrl;\n                        }\n                        const player = videojs(videoElement, {\n                            muted: true,\n                            autoplay: true,\n                        });\n\n                        player.src({\n                            src: playerSrc,\n                            type: 'application\/x-mpegURL'\n                        });\n\n                        \/* SEGMENT EVENTS *\/\n                        const special_data = getProps();\n\n                        \/* media played *\/\n                        var $videoElement = $(videoElement);\n                        $videoElement.on('play', function() {\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media played\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n\n                        \/* media paused *\/\n                        var $videoElement = $(videoElement);\n                        $videoElement.on('pause', function() {\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media paused\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n\n                        \/* media viewed *\/\n                        const observer = new IntersectionObserver(entries => {\n                            entries.forEach(entry => {\n                                if (entry.isIntersecting) {\n                                    var assetId = clip.id;\n                                    var artist = clip.filmMakerDisplayName || clip.artistName;\n                                    var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                                    var asset_type = null;\n                                    if(\"footage\" == 'footage') {\n                                        asset_type = 'footage';\n                                    } else if(\"footage\" == 'templates') {\n                                        asset_type = 'template';\n                                    }\n                                    analytics.track(\"media viewed\", {\n                                        asset_id: assetId || null,\n                                        asset_type: asset_type || null,\n                                        click_source: 'player',\n                                        artist: artist || null,\n                                        title: title || null,\n                                        genre: null,\n                                        ...special_data,\n                                    });\n                                    observer.unobserve(entry.target);\n                                }\n                            });\n                        }, {\n                            threshold: 0.5\n                        });\n                        observer.observe($videoElement[0]);\n\n                        \/* media downloaded *\/\n                        $videoElement.closest('.clipContainer').find('.clipName').on('click', function() {\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media downloaded\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n                        $videoElement.closest('.clipContainer').find('.clipDownload').on('click', function() {\n                            var assetId = clip.id;\n                            var artist = clip.filmMakerDisplayName || clip.artistName;\n                            var title = clip.clipNameForUrl ? clip.clipNameForUrl.replace(\/-\/g, \", \") : clip.name;\n                            var asset_type = null;\n                            if(\"footage\" == 'footage') {\n                                asset_type = 'footage';\n                            } else if(\"footage\" == 'templates') {\n                                asset_type = 'template';\n                            }\n                            analytics.track(\"media downloaded\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        });\n\n                        \/\/ check screen size\n                        var mobileScreen = window.matchMedia('(max-width: 767px)');\n                        if (mobileScreen.matches) { \/\/ mobile\n                            const observer = new IntersectionObserver(function(entries) {\n                                entries.forEach(entry => {\n                                    if (entry.isIntersecting) {\n                                        player.play(); \/\/ Play the video when it enters the viewport\n                                    } else {\n                                        player.pause(); \/\/ Pause the video when it goes out of the viewport\n                                    }\n                                });\n                            });\n                            observer.observe(videoElement);\n                        } else { \/\/ desktop\n                            clipContainer.on('mouseenter', function() {\n                                player.play();\n                            });\n\n                            clipContainer.on('mouseleave', function() {\n                                player.pause();\n                            });\n                        }\n\n                    }\n                    if(\"639889\" !== '') { \/\/ if this is a request for a specific clip by id - then break out of loop after first time bc it's not an array\n                        return false;\n                    }\n                });\n            }\n\n        });\n    <\/script>\n\n    \n<h2>Step-by-step guide on recording hands-free<\/h2>\n<p>As previously mentioned, there are two different ways to record a TikTok without having to hold your phone. You can either use TikTok\u2019s timer or simply tap the record button to shoot. Both methods allow you to record your video hands-free, but I personally like using the stopwatch, because it gives me the time I need to properly set up my shot and get in place before I start recording.<\/p>\n<p>This simple step-by-step guide will teach you how to make a TikTok hands-free using two different techniques:<\/p>\n<h3>Technique #1: Hands-free recording using the timer\/stopwatch<\/h3>\n<ol>\n<li><strong>Step #1: <\/strong>Open the TikTok app from your smartphone or tablet.<\/li>\n<li><strong>Step #2: <\/strong>Once in the app, tap the plus (+) icon located in the bottom center of the screen.<\/li>\n<li><strong>Step #3: <\/strong>Position your phone or tablet at the angle you want to record. You may choose to lean the device on an object or use a tripod to capture everything you want in the video.<\/li>\n<li><strong>Step #4: <\/strong>Tap the timer\/stopwatch icon located on the right-hand side of the screen (the timer icon looks like a tiny stopwatch.)<\/li>\n<li><strong>Step #5: <\/strong>Determine when you want your recording to end by simply dragging the pink line along the timeline at the bottom of the screen. The app will automatically stop recording at the point you choose.<\/li>\n<li><strong>Step #6: <\/strong>Get in position to shoot your video and start the countdown. The app will countdown (3, 2, 1\u2026) and then automatically begin recording. <strong>Pro tip:<\/strong> You can pause the recording at any time by tapping the stop button at the bottom of the screen. When you\u2019re ready to resume recording, simply hit the timer icon once again.<\/li>\n<li><strong>Step #7: <\/strong>When you\u2019ve finished recording, tap the checkmark icon at the bottom of the screen.<\/li>\n<\/ol>\n<h3>\u00a0Technique #2: Hands-free recording using the record icon<\/h3>\n<ol>\n<li><strong>Step #1: <\/strong>Open the TikTok app from your smartphone or tablet.<\/li>\n<li><strong>Step #2: <\/strong>Once in the app, tap the plus (+) icon located in the bottom center of the screen.<\/li>\n<li><strong>Step #3: <\/strong>Tap the record button at the bottom center of the screen and select how long you want the video to record (currently you have the option to choose from 15 seconds, 60 seconds, or 10 minutes.) *Note that TikTok occasionally changes these options.<\/li>\n<li><strong>Step #4: <\/strong>Position the phone where you want and press record.<\/li>\n<\/ol>\n<h2>Tips to take your TikTok videos up a notch<\/h2>\n<p>Once you\u2019ve mastered the art of hands-free recording, it\u2019s time to get creative and take your TikTok videos up a notch. This is where editing and effects come into play\u2014my favorite part of being a TikTok creator!<\/p>\n<p>You can apply <a href=\"https:\/\/artlist.io\/blog\/royalty-free-tiktok-sound-effects\/\">TikTok sound effects<\/a> and <a href=\"https:\/\/artlist.io\/blog\/tiktok-voice-effects\/\">voice effects<\/a>, transitions, and <a href=\"https:\/\/artlist.io\/blog\/tiktok-filters\/\">filters<\/a> while recording in real-time. Personally, I like to test out trending filters to keep things interesting, new, and fresh.<\/p>\n<p>After you\u2019ve finished recording, there are a number of editing tools TikTok provides that can help enhance your video and increase engagement. For example, you can trim and\/or delete sections of your video, adjust the volume, add music and\/or sound effects, captions, <a href=\"https:\/\/artlist.io\/blog\/how-to-use-tiktok-effects-a-beginners-guide\/\">stickers<\/a>, and more.<\/p>\n<p><strong>Pro tip: <\/strong>Adding trending hashtags that are relevant to your content will help make your video more easily discoverable by your target audience.<\/p>\n<p>Check out our collection of <a href=\"https:\/\/artlist.io\/collection\/10586\/perfect-for-tiktok\">hook-filled songs that are perfect for TikTok<\/a>!<\/p>\n\n    <div class=\"playlist\" id=\"69d07a3481e0c\"><\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n\n            if(\"songs\" == 'songs') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SongList($page: Int!, $songSortType: Int!, $take: Int!, $vocalMenuId: Int!, $categoryIds: [Int], $collectionId: String, $searchTerm: String) {\n                        songList(page: $page, songSortType: $songSortType, take: $take, vocalMenuId: $vocalMenuId, categoryIds: $categoryIds, collectionId: $collectionId, searchTerm: $searchTerm) {\n                          songs {\n                            songId\n                            songName\n                            artistName\n                            isNew\n                            nameForURL\n                            sitePlayableFilePath\n\t\t\t\t\t\t\talbumImageFilePath\n\t\t\t\t\t\t\trelativeUrl\n                          }\n                          totalResults\n                        }\n                    }`,\n                        variables: JSON.stringify({\n                            \"page\": 1,\n                            \"songSortType\": 1,\n                            \"take\": 1,\n                            \"vocalMenuId\": 1,\n                            \"categoryIds\": null,\n                            \"searchTerm\": \"Voodoo People\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('songs list: ', res);\n                        var data = res.data.songList.songs;\n                        if ($(\"#69d07a3481e0c\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07a3481e0c\");\n                        } else if ($(\"#69d07a3481e0c\").length && data.length == 0) {\n                            $(\"#69d07a3481e0c\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            } else if(\"songs\" == 'sfx') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SfxList($categoryIds: String!, $page: Float!, $tags: String!, $term: String!, $sortBy: SfxListRequestSortByOptions!) {\n\t\t\t\t\t\t\t\tsfxList(categoryIds: $categoryIds, page: $page, tags: $tags, term: $term, sortBy: $sortBy) {\n\t\t\t\t\t\t\t\t  page\n\t\t\t\t\t\t\t\t  songs {\n\t\t\t\t\t\t\t\t\t  albumImageFilePath\n\t\t\t\t\t\t\t\t\t  artistName\n\t\t\t\t\t\t\t\t\t  isNew\n\t\t\t\t\t\t\t\t\t  nameForURL\n\t\t\t\t\t\t\t\t\t  relativeUrl\n\t\t\t\t\t\t\t\t\t  sitePlayableFilePath        \n\t\t\t\t\t\t\t\t\t  songId \n\t\t\t\t\t\t\t\t\t  songName\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                        variables: JSON.stringify({\n                            \"categoryIds\": \"\",\n                            \"page\": 1,\n                            \"tags\": \"\",\n                            \"term\": \"Voodoo People\",\n                            \"sortBy\": \"1\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('sfx list: ', res);\n                        var data = res.data.sfxList.songs;\n                        if ($(\"#69d07a3481e0c\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07a3481e0c\");\n                        } else if ($(\"#69d07a3481e0c\").length && data.length == 0) {\n                            $(\"#69d07a3481e0c\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            }\n\n            function createAudioPlayers(data, playlistId) {\n                \/\/ main playlist container\n                const playlistContainer = $(\"#\" + playlistId);\n                \/\/ wavesurfers array\n                \/\/ const wavesurfers = [];\n                \/\/ loop over every song returned\n\n                if(!allWavesurfers){\n                    var allWavesurfers = [];\n                }\n                $.each(data, function(index, audio) {\n                    \/\/ if current type is sfx and current looped index is bigger than amount wanted via shortcode - then stop loop (because sfx request doesn't have \"take\" variable)\n                    if(\"songs\" == 'sfx' && (index + 1) > 1) {\n                        return false;\n                    }\n\n                    \/\/ audio player container\n                    const audioPlayer = $(\"<div>\").addClass(\"audioPlayer\");\n                    \/\/ album image\n                    const audioImage = $(\"<div>\").addClass(\"audioImage\");\n                    audioImage.append('<img decoding=\"async\" src=\"' + audio.albumImageFilePath + '\"\/>');\n                    \/\/ audio controls\n                    const audioControls = $(\"<div>\").addClass(\"audioControls\");\n                    const playPauseButton = $(\"<button>\").addClass(\"playPauseButton\").html('<i class=\"fas fa-play\"><\/i>');\n                    audioControls.append(playPauseButton);\n                    \/\/ song url\n                    var songUrl;\n                    if(\"songs\" == 'songs') {\n                        songUrl = 'https:\/\/artlist.io\/royalty-free-music\/song\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    } else if(\"songs\" == 'sfx') {\n                        songUrl = 'https:\/\/artlist.io\/sfx\/track\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    }\n                    \/\/ song name and artist name\n                    const audioNames = $(\"<div>\").addClass(\"audioNames\");\n                    const songName = $(\"<a>\").addClass(\"songName\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").text(audio.songName);\n                    if (audio.isNew) {\n                        songName.append('<span class=\"isNewBadge\">NEW<\/span>');\n                    }\n                    const artistName = $(\"<span>\").addClass(\"artistName\").text(audio.artistName);\n                    audioNames.append(songName, artistName);\n                    \/\/ audio waveform container\n                    const audioWaveform = $(\"<div>\").addClass(\"audioWaveform\");\n                    \/\/ download button\n                    const audioDownload = $(\"<a>\").addClass(\"audioDownload\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").html('<i class=\"icon download medium\"><\/i>');\n\n\n                    \/\/ APPEND ALL ELEMENTS INTO AUDIO PLAYER CONTAINER\n                    audioPlayer.append(audioImage, audioControls, audioNames, audioWaveform, audioDownload);\n\n                    \/\/ append audio player container into main playlist container\n                    playlistContainer.append(audioPlayer);\n\n                    \/* media viewed SEGMENT EVENT *\/\n                    const special_data = getProps();\n\n                    const observer = new IntersectionObserver(entries => {\n                        entries.forEach(entry => {\n                            if (entry.isIntersecting) {\n                                var assetId = audio.songId;\n                                var artist = audio.artistName;\n                                var title = audio.songName;\n                                var asset_type = null;\n                                if(\"songs\" == 'songs') {\n                                    asset_type = 'song';\n                                } else if(\"songs\" == 'sfx') {\n                                    asset_type = 'sfx';\n                                }\n                                analytics.track(\"media viewed\", {\n                                    asset_id: assetId || null,\n                                    asset_type: asset_type || null,\n                                    click_source: 'player',\n                                    artist: artist || null,\n                                    title: title || null,\n                                    genre: null,\n                                    ...special_data,\n                                });\n                                observer.unobserve(entry.target);\n                            }\n                        });\n                    }, {\n                        threshold: 0.5\n                    });\n                    observer.observe(audioPlayer[0]);\n\n                    \/\/ check screen size\n                    var mobileScreen = window.matchMedia('(max-width: 767px)');\n                    var waveformHeight = '';\n                    if (mobileScreen.matches) { \/\/ mobile\n                        waveformHeight = 15;\n                    } else { \/\/ desktop\n                        waveformHeight = 40;\n                    }\n\n                    \/\/ create wavesurfer instance\n                    const waveformId = `waveform-${playlistId}-${index}`; \/\/ Generate a unique ID for each waveform\n                    const waveformContainer = $(\"<div>\").attr(\"id\", waveformId).addClass(\"waveformContainer\");\n                    audioWaveform.append(waveformContainer);\n                    const wavesurfer = WaveSurfer.create({\n                        container: `#${waveformId}`,\n                        waveColor: \"#b1b1b1\",\n                        progressColor: \"#171717\",\n                        cursorColor: \"transparent\",\n                        height: waveformHeight,\n                        normalize: true,\n                    });\n                    \/\/ push current wavesurfer into wavesurfers array\n                    \/\/ wavesurfers.push(wavesurfer);\n                    allWavesurfers.push(wavesurfer);\n                    \/\/ load audio file into new wavesurfer\n                    wavesurfer.load(audio.sitePlayableFilePath);\n\n                    \/\/ add event listener to the play\/pause button\n                    playPauseButton.on(\"click\", () => {\n                        if (wavesurfer.isPlaying()) {\n                            wavesurfer.pause();\n                            playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n\n                            \/* media paused SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media paused\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        } else {\n                            \/\/ pause all other audios that may be playing\n                            $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                            $.each(allWavesurfers, function(index, audio) {\n                                allWavesurfers[index].pause();\n                            });\n                            \/\/ then play current audio\n                            wavesurfer.play();\n                            playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n\n                            \/* media played SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media played\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        }\n                    });\n\n                    \/* media downloaded SEGMENT EVENT *\/\n                    audioDownload.on(\"click\", () => {\n                        var assetId = audio.songId;\n                        var artist = audio.artistName;\n                        var title = audio.songName;\n                        var asset_type = null;\n                        if(\"songs\" == 'songs') {\n                            asset_type = 'song';\n                        } else if(\"songs\" == 'sfx') {\n                            asset_type = 'sfx';\n                        }\n                        analytics.track(\"media downloaded\", {\n                            asset_id: assetId || null,\n                            asset_type: asset_type || null,\n                            click_source: 'player',\n                            artist: artist || null,\n                            title: title || null,\n                            genre: null,\n                            ...special_data,\n                        });\n                    });\n\n                    \/\/ add event listener to the click on the wave itself\n                    audioWaveform.on(\"click\", () => {\n                        setTimeout(() => {\n                            if (wavesurfer.isPlaying()) {\n                                wavesurfer.pause();\n                                playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n                            } else {\n                                \/\/ pause all other audios that may be playing\n                                $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                                $.each(allWavesurfers, function(index, audio) {\n                                    allWavesurfers[index].pause();\n                                });\n                                \/\/ then play current audio\n                                wavesurfer.play();\n                                playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n                            }\n                        }, \"200\");\n                    });\n\n                });\n            }\n\n        });\n    <\/script>\n\n    \n<p>&nbsp;<\/p>\n\n    <div class=\"playlist\" id=\"69d07a3481e72\"><\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n\n            if(\"songs\" == 'songs') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SongList($page: Int!, $songSortType: Int!, $take: Int!, $vocalMenuId: Int!, $categoryIds: [Int], $collectionId: String, $searchTerm: String) {\n                        songList(page: $page, songSortType: $songSortType, take: $take, vocalMenuId: $vocalMenuId, categoryIds: $categoryIds, collectionId: $collectionId, searchTerm: $searchTerm) {\n                          songs {\n                            songId\n                            songName\n                            artistName\n                            isNew\n                            nameForURL\n                            sitePlayableFilePath\n\t\t\t\t\t\t\talbumImageFilePath\n\t\t\t\t\t\t\trelativeUrl\n                          }\n                          totalResults\n                        }\n                    }`,\n                        variables: JSON.stringify({\n                            \"page\": 1,\n                            \"songSortType\": 1,\n                            \"take\": 1,\n                            \"vocalMenuId\": 1,\n                            \"categoryIds\": null,\n                            \"searchTerm\": \"Plantation\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('songs list: ', res);\n                        var data = res.data.songList.songs;\n                        if ($(\"#69d07a3481e72\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07a3481e72\");\n                        } else if ($(\"#69d07a3481e72\").length && data.length == 0) {\n                            $(\"#69d07a3481e72\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            } else if(\"songs\" == 'sfx') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SfxList($categoryIds: String!, $page: Float!, $tags: String!, $term: String!, $sortBy: SfxListRequestSortByOptions!) {\n\t\t\t\t\t\t\t\tsfxList(categoryIds: $categoryIds, page: $page, tags: $tags, term: $term, sortBy: $sortBy) {\n\t\t\t\t\t\t\t\t  page\n\t\t\t\t\t\t\t\t  songs {\n\t\t\t\t\t\t\t\t\t  albumImageFilePath\n\t\t\t\t\t\t\t\t\t  artistName\n\t\t\t\t\t\t\t\t\t  isNew\n\t\t\t\t\t\t\t\t\t  nameForURL\n\t\t\t\t\t\t\t\t\t  relativeUrl\n\t\t\t\t\t\t\t\t\t  sitePlayableFilePath        \n\t\t\t\t\t\t\t\t\t  songId \n\t\t\t\t\t\t\t\t\t  songName\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                        variables: JSON.stringify({\n                            \"categoryIds\": \"\",\n                            \"page\": 1,\n                            \"tags\": \"\",\n                            \"term\": \"Plantation\",\n                            \"sortBy\": \"1\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('sfx list: ', res);\n                        var data = res.data.sfxList.songs;\n                        if ($(\"#69d07a3481e72\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07a3481e72\");\n                        } else if ($(\"#69d07a3481e72\").length && data.length == 0) {\n                            $(\"#69d07a3481e72\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            }\n\n            function createAudioPlayers(data, playlistId) {\n                \/\/ main playlist container\n                const playlistContainer = $(\"#\" + playlistId);\n                \/\/ wavesurfers array\n                \/\/ const wavesurfers = [];\n                \/\/ loop over every song returned\n\n                if(!allWavesurfers){\n                    var allWavesurfers = [];\n                }\n                $.each(data, function(index, audio) {\n                    \/\/ if current type is sfx and current looped index is bigger than amount wanted via shortcode - then stop loop (because sfx request doesn't have \"take\" variable)\n                    if(\"songs\" == 'sfx' && (index + 1) > 1) {\n                        return false;\n                    }\n\n                    \/\/ audio player container\n                    const audioPlayer = $(\"<div>\").addClass(\"audioPlayer\");\n                    \/\/ album image\n                    const audioImage = $(\"<div>\").addClass(\"audioImage\");\n                    audioImage.append('<img decoding=\"async\" src=\"' + audio.albumImageFilePath + '\"\/>');\n                    \/\/ audio controls\n                    const audioControls = $(\"<div>\").addClass(\"audioControls\");\n                    const playPauseButton = $(\"<button>\").addClass(\"playPauseButton\").html('<i class=\"fas fa-play\"><\/i>');\n                    audioControls.append(playPauseButton);\n                    \/\/ song url\n                    var songUrl;\n                    if(\"songs\" == 'songs') {\n                        songUrl = 'https:\/\/artlist.io\/royalty-free-music\/song\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    } else if(\"songs\" == 'sfx') {\n                        songUrl = 'https:\/\/artlist.io\/sfx\/track\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    }\n                    \/\/ song name and artist name\n                    const audioNames = $(\"<div>\").addClass(\"audioNames\");\n                    const songName = $(\"<a>\").addClass(\"songName\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").text(audio.songName);\n                    if (audio.isNew) {\n                        songName.append('<span class=\"isNewBadge\">NEW<\/span>');\n                    }\n                    const artistName = $(\"<span>\").addClass(\"artistName\").text(audio.artistName);\n                    audioNames.append(songName, artistName);\n                    \/\/ audio waveform container\n                    const audioWaveform = $(\"<div>\").addClass(\"audioWaveform\");\n                    \/\/ download button\n                    const audioDownload = $(\"<a>\").addClass(\"audioDownload\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").html('<i class=\"icon download medium\"><\/i>');\n\n\n                    \/\/ APPEND ALL ELEMENTS INTO AUDIO PLAYER CONTAINER\n                    audioPlayer.append(audioImage, audioControls, audioNames, audioWaveform, audioDownload);\n\n                    \/\/ append audio player container into main playlist container\n                    playlistContainer.append(audioPlayer);\n\n                    \/* media viewed SEGMENT EVENT *\/\n                    const special_data = getProps();\n\n                    const observer = new IntersectionObserver(entries => {\n                        entries.forEach(entry => {\n                            if (entry.isIntersecting) {\n                                var assetId = audio.songId;\n                                var artist = audio.artistName;\n                                var title = audio.songName;\n                                var asset_type = null;\n                                if(\"songs\" == 'songs') {\n                                    asset_type = 'song';\n                                } else if(\"songs\" == 'sfx') {\n                                    asset_type = 'sfx';\n                                }\n                                analytics.track(\"media viewed\", {\n                                    asset_id: assetId || null,\n                                    asset_type: asset_type || null,\n                                    click_source: 'player',\n                                    artist: artist || null,\n                                    title: title || null,\n                                    genre: null,\n                                    ...special_data,\n                                });\n                                observer.unobserve(entry.target);\n                            }\n                        });\n                    }, {\n                        threshold: 0.5\n                    });\n                    observer.observe(audioPlayer[0]);\n\n                    \/\/ check screen size\n                    var mobileScreen = window.matchMedia('(max-width: 767px)');\n                    var waveformHeight = '';\n                    if (mobileScreen.matches) { \/\/ mobile\n                        waveformHeight = 15;\n                    } else { \/\/ desktop\n                        waveformHeight = 40;\n                    }\n\n                    \/\/ create wavesurfer instance\n                    const waveformId = `waveform-${playlistId}-${index}`; \/\/ Generate a unique ID for each waveform\n                    const waveformContainer = $(\"<div>\").attr(\"id\", waveformId).addClass(\"waveformContainer\");\n                    audioWaveform.append(waveformContainer);\n                    const wavesurfer = WaveSurfer.create({\n                        container: `#${waveformId}`,\n                        waveColor: \"#b1b1b1\",\n                        progressColor: \"#171717\",\n                        cursorColor: \"transparent\",\n                        height: waveformHeight,\n                        normalize: true,\n                    });\n                    \/\/ push current wavesurfer into wavesurfers array\n                    \/\/ wavesurfers.push(wavesurfer);\n                    allWavesurfers.push(wavesurfer);\n                    \/\/ load audio file into new wavesurfer\n                    wavesurfer.load(audio.sitePlayableFilePath);\n\n                    \/\/ add event listener to the play\/pause button\n                    playPauseButton.on(\"click\", () => {\n                        if (wavesurfer.isPlaying()) {\n                            wavesurfer.pause();\n                            playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n\n                            \/* media paused SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media paused\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        } else {\n                            \/\/ pause all other audios that may be playing\n                            $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                            $.each(allWavesurfers, function(index, audio) {\n                                allWavesurfers[index].pause();\n                            });\n                            \/\/ then play current audio\n                            wavesurfer.play();\n                            playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n\n                            \/* media played SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media played\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        }\n                    });\n\n                    \/* media downloaded SEGMENT EVENT *\/\n                    audioDownload.on(\"click\", () => {\n                        var assetId = audio.songId;\n                        var artist = audio.artistName;\n                        var title = audio.songName;\n                        var asset_type = null;\n                        if(\"songs\" == 'songs') {\n                            asset_type = 'song';\n                        } else if(\"songs\" == 'sfx') {\n                            asset_type = 'sfx';\n                        }\n                        analytics.track(\"media downloaded\", {\n                            asset_id: assetId || null,\n                            asset_type: asset_type || null,\n                            click_source: 'player',\n                            artist: artist || null,\n                            title: title || null,\n                            genre: null,\n                            ...special_data,\n                        });\n                    });\n\n                    \/\/ add event listener to the click on the wave itself\n                    audioWaveform.on(\"click\", () => {\n                        setTimeout(() => {\n                            if (wavesurfer.isPlaying()) {\n                                wavesurfer.pause();\n                                playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n                            } else {\n                                \/\/ pause all other audios that may be playing\n                                $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                                $.each(allWavesurfers, function(index, audio) {\n                                    allWavesurfers[index].pause();\n                                });\n                                \/\/ then play current audio\n                                wavesurfer.play();\n                                playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n                            }\n                        }, \"200\");\n                    });\n\n                });\n            }\n\n        });\n    <\/script>\n\n    \n<p>&nbsp;<\/p>\n\n    <div class=\"playlist\" id=\"69d07a3481ecc\"><\/div>\n\n    <script>\n        jQuery(document).ready(function($) {\n\n            if(\"songs\" == 'songs') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SongList($page: Int!, $songSortType: Int!, $take: Int!, $vocalMenuId: Int!, $categoryIds: [Int], $collectionId: String, $searchTerm: String) {\n                        songList(page: $page, songSortType: $songSortType, take: $take, vocalMenuId: $vocalMenuId, categoryIds: $categoryIds, collectionId: $collectionId, searchTerm: $searchTerm) {\n                          songs {\n                            songId\n                            songName\n                            artistName\n                            isNew\n                            nameForURL\n                            sitePlayableFilePath\n\t\t\t\t\t\t\talbumImageFilePath\n\t\t\t\t\t\t\trelativeUrl\n                          }\n                          totalResults\n                        }\n                    }`,\n                        variables: JSON.stringify({\n                            \"page\": 1,\n                            \"songSortType\": 1,\n                            \"take\": 1,\n                            \"vocalMenuId\": 1,\n                            \"categoryIds\": null,\n                            \"searchTerm\": \"Nut Your Business\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('songs list: ', res);\n                        var data = res.data.songList.songs;\n                        if ($(\"#69d07a3481ecc\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07a3481ecc\");\n                        } else if ($(\"#69d07a3481ecc\").length && data.length == 0) {\n                            $(\"#69d07a3481ecc\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            } else if(\"songs\" == 'sfx') {\n                $.ajax({\n                    method: \"POST\",\n                    url: \"https:\/\/search-api.artlist.me\/v1\/graphql\",\n                    contentType: \"application\/json\",\n                    data: JSON.stringify({\n                        query: `query SfxList($categoryIds: String!, $page: Float!, $tags: String!, $term: String!, $sortBy: SfxListRequestSortByOptions!) {\n\t\t\t\t\t\t\t\tsfxList(categoryIds: $categoryIds, page: $page, tags: $tags, term: $term, sortBy: $sortBy) {\n\t\t\t\t\t\t\t\t  page\n\t\t\t\t\t\t\t\t  songs {\n\t\t\t\t\t\t\t\t\t  albumImageFilePath\n\t\t\t\t\t\t\t\t\t  artistName\n\t\t\t\t\t\t\t\t\t  isNew\n\t\t\t\t\t\t\t\t\t  nameForURL\n\t\t\t\t\t\t\t\t\t  relativeUrl\n\t\t\t\t\t\t\t\t\t  sitePlayableFilePath        \n\t\t\t\t\t\t\t\t\t  songId \n\t\t\t\t\t\t\t\t\t  songName\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}`,\n                        variables: JSON.stringify({\n                            \"categoryIds\": \"\",\n                            \"page\": 1,\n                            \"tags\": \"\",\n                            \"term\": \"Nut Your Business\",\n                            \"sortBy\": \"1\"\n                        }),\n                    })\n                }).done(function(res) {\n                    if (res == '') {\n                        console.log('none');\n                    } else {\n                        console.log('sfx list: ', res);\n                        var data = res.data.sfxList.songs;\n                        if ($(\"#69d07a3481ecc\").length && data.length > 0) {\n                            createAudioPlayers(data, \"69d07a3481ecc\");\n                        } else if ($(\"#69d07a3481ecc\").length && data.length == 0) {\n                            $(\"#69d07a3481ecc\").empty().append('<div class=\"noSongsError\">No songs were found.<\/div>');\n                        }\n                    }\n                });\n            }\n\n            function createAudioPlayers(data, playlistId) {\n                \/\/ main playlist container\n                const playlistContainer = $(\"#\" + playlistId);\n                \/\/ wavesurfers array\n                \/\/ const wavesurfers = [];\n                \/\/ loop over every song returned\n\n                if(!allWavesurfers){\n                    var allWavesurfers = [];\n                }\n                $.each(data, function(index, audio) {\n                    \/\/ if current type is sfx and current looped index is bigger than amount wanted via shortcode - then stop loop (because sfx request doesn't have \"take\" variable)\n                    if(\"songs\" == 'sfx' && (index + 1) > 1) {\n                        return false;\n                    }\n\n                    \/\/ audio player container\n                    const audioPlayer = $(\"<div>\").addClass(\"audioPlayer\");\n                    \/\/ album image\n                    const audioImage = $(\"<div>\").addClass(\"audioImage\");\n                    audioImage.append('<img decoding=\"async\" src=\"' + audio.albumImageFilePath + '\"\/>');\n                    \/\/ audio controls\n                    const audioControls = $(\"<div>\").addClass(\"audioControls\");\n                    const playPauseButton = $(\"<button>\").addClass(\"playPauseButton\").html('<i class=\"fas fa-play\"><\/i>');\n                    audioControls.append(playPauseButton);\n                    \/\/ song url\n                    var songUrl;\n                    if(\"songs\" == 'songs') {\n                        songUrl = 'https:\/\/artlist.io\/royalty-free-music\/song\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    } else if(\"songs\" == 'sfx') {\n                        songUrl = 'https:\/\/artlist.io\/sfx\/track\/' + audio.nameForURL + '\/' + audio.songId + '?download=1&utm_source=blog';\n                    }\n                    \/\/ song name and artist name\n                    const audioNames = $(\"<div>\").addClass(\"audioNames\");\n                    const songName = $(\"<a>\").addClass(\"songName\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").text(audio.songName);\n                    if (audio.isNew) {\n                        songName.append('<span class=\"isNewBadge\">NEW<\/span>');\n                    }\n                    const artistName = $(\"<span>\").addClass(\"artistName\").text(audio.artistName);\n                    audioNames.append(songName, artistName);\n                    \/\/ audio waveform container\n                    const audioWaveform = $(\"<div>\").addClass(\"audioWaveform\");\n                    \/\/ download button\n                    const audioDownload = $(\"<a>\").addClass(\"audioDownload\").attr(\"href\", songUrl).attr(\"target\", \"_blank\").html('<i class=\"icon download medium\"><\/i>');\n\n\n                    \/\/ APPEND ALL ELEMENTS INTO AUDIO PLAYER CONTAINER\n                    audioPlayer.append(audioImage, audioControls, audioNames, audioWaveform, audioDownload);\n\n                    \/\/ append audio player container into main playlist container\n                    playlistContainer.append(audioPlayer);\n\n                    \/* media viewed SEGMENT EVENT *\/\n                    const special_data = getProps();\n\n                    const observer = new IntersectionObserver(entries => {\n                        entries.forEach(entry => {\n                            if (entry.isIntersecting) {\n                                var assetId = audio.songId;\n                                var artist = audio.artistName;\n                                var title = audio.songName;\n                                var asset_type = null;\n                                if(\"songs\" == 'songs') {\n                                    asset_type = 'song';\n                                } else if(\"songs\" == 'sfx') {\n                                    asset_type = 'sfx';\n                                }\n                                analytics.track(\"media viewed\", {\n                                    asset_id: assetId || null,\n                                    asset_type: asset_type || null,\n                                    click_source: 'player',\n                                    artist: artist || null,\n                                    title: title || null,\n                                    genre: null,\n                                    ...special_data,\n                                });\n                                observer.unobserve(entry.target);\n                            }\n                        });\n                    }, {\n                        threshold: 0.5\n                    });\n                    observer.observe(audioPlayer[0]);\n\n                    \/\/ check screen size\n                    var mobileScreen = window.matchMedia('(max-width: 767px)');\n                    var waveformHeight = '';\n                    if (mobileScreen.matches) { \/\/ mobile\n                        waveformHeight = 15;\n                    } else { \/\/ desktop\n                        waveformHeight = 40;\n                    }\n\n                    \/\/ create wavesurfer instance\n                    const waveformId = `waveform-${playlistId}-${index}`; \/\/ Generate a unique ID for each waveform\n                    const waveformContainer = $(\"<div>\").attr(\"id\", waveformId).addClass(\"waveformContainer\");\n                    audioWaveform.append(waveformContainer);\n                    const wavesurfer = WaveSurfer.create({\n                        container: `#${waveformId}`,\n                        waveColor: \"#b1b1b1\",\n                        progressColor: \"#171717\",\n                        cursorColor: \"transparent\",\n                        height: waveformHeight,\n                        normalize: true,\n                    });\n                    \/\/ push current wavesurfer into wavesurfers array\n                    \/\/ wavesurfers.push(wavesurfer);\n                    allWavesurfers.push(wavesurfer);\n                    \/\/ load audio file into new wavesurfer\n                    wavesurfer.load(audio.sitePlayableFilePath);\n\n                    \/\/ add event listener to the play\/pause button\n                    playPauseButton.on(\"click\", () => {\n                        if (wavesurfer.isPlaying()) {\n                            wavesurfer.pause();\n                            playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n\n                            \/* media paused SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media paused\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        } else {\n                            \/\/ pause all other audios that may be playing\n                            $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                            $.each(allWavesurfers, function(index, audio) {\n                                allWavesurfers[index].pause();\n                            });\n                            \/\/ then play current audio\n                            wavesurfer.play();\n                            playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n\n                            \/* media played SEGMENT EVENT *\/\n                            var assetId = audio.songId;\n                            var artist = audio.artistName;\n                            var title = audio.songName;\n                            var asset_type = null;\n                            if(\"songs\" == 'songs') {\n                                asset_type = 'song';\n                            } else if(\"songs\" == 'sfx') {\n                                asset_type = 'sfx';\n                            }\n                            analytics.track(\"media played\", {\n                                asset_id: assetId || null,\n                                asset_type: asset_type || null,\n                                click_source: 'player',\n                                artist: artist || null,\n                                title: title || null,\n                                genre: null,\n                                ...special_data,\n                            });\n                        }\n                    });\n\n                    \/* media downloaded SEGMENT EVENT *\/\n                    audioDownload.on(\"click\", () => {\n                        var assetId = audio.songId;\n                        var artist = audio.artistName;\n                        var title = audio.songName;\n                        var asset_type = null;\n                        if(\"songs\" == 'songs') {\n                            asset_type = 'song';\n                        } else if(\"songs\" == 'sfx') {\n                            asset_type = 'sfx';\n                        }\n                        analytics.track(\"media downloaded\", {\n                            asset_id: assetId || null,\n                            asset_type: asset_type || null,\n                            click_source: 'player',\n                            artist: artist || null,\n                            title: title || null,\n                            genre: null,\n                            ...special_data,\n                        });\n                    });\n\n                    \/\/ add event listener to the click on the wave itself\n                    audioWaveform.on(\"click\", () => {\n                        setTimeout(() => {\n                            if (wavesurfer.isPlaying()) {\n                                wavesurfer.pause();\n                                playPauseButton.html('<i class=\"fas fa-play\"><\/i>');\n                            } else {\n                                \/\/ pause all other audios that may be playing\n                                $('.playPauseButton').html('<i class=\"fas fa-play\"><\/i>');\n                                $.each(allWavesurfers, function(index, audio) {\n                                    allWavesurfers[index].pause();\n                                });\n                                \/\/ then play current audio\n                                wavesurfer.play();\n                                playPauseButton.html('<i class=\"fas fa-pause\"><\/i>');\n                            }\n                        }, \"200\");\n                    });\n\n                });\n            }\n\n        });\n    <\/script>\n\n    \n<h2>Conclusion<\/h2>\n<p>Now that you know how to make TikTok recordings hands-free, you\u2019ll be able to take your video content to the next level. When you enhance your videos with effects, and apply the right editing tools, the end result is a more interactive and engaged audience. We hope these tips and tricks will help kick your TikTok game up a notch. Happy creating!<\/p>\n<p>Ready for more? Learn <a href=\"https:\/\/artlist.io\/blog\/new-ways-to-make-money-on-tiktok\/\">how to make money on TikTok<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is hands-free recording on TikTok? Did you know that you can record videos hands-free on TikTok? Just like it sounds, you can record videos on your phone without using your hands right from the TikTok app. This way, you can more easily make videos without having to hold down the record button the entire [&hellip;]<\/p>\n","protected":false},"author":42,"featured_media":12475,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","footnotes":""},"categories":[581],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How To Make TikTok Recordings Hands-Free | Artlist Blog<\/title>\n<meta name=\"description\" content=\"Learn how to make a TikTok hands-free in our step-by-step guide, and tips and tricks to help you take your videos up a notch.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How To Make TikTok Recordings Hands-Free | Artlist Blog\" \/>\n<meta property=\"og:description\" content=\"Learn how to make a TikTok hands-free in our step-by-step guide, and tips and tricks to help you take your videos up a notch.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/\" \/>\n<meta property=\"og:site_name\" content=\"Artlist Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-18T07:56:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-01T12:21:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2023\/10\/181023-How-to-record-a-Tiktok-video-hands-free-blog-cover-2-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"717\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kim Wacker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kim Wacker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/\"},\"author\":{\"name\":\"Kim Wacker\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/person\/b61e3347987d9f4a01f200dc2a9e8aec\"},\"headline\":\"How to record hands-free on TikTok\",\"datePublished\":\"2023-10-18T07:56:47+00:00\",\"dateModified\":\"2024-01-01T12:21:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/\"},\"wordCount\":1133,\"publisher\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#organization\"},\"articleSection\":[\"Social Content Creators\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/\",\"url\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/\",\"name\":\"How To Make TikTok Recordings Hands-Free | Artlist Blog\",\"isPartOf\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#website\"},\"datePublished\":\"2023-10-18T07:56:47+00:00\",\"dateModified\":\"2024-01-01T12:21:42+00:00\",\"description\":\"Learn how to make a TikTok hands-free in our step-by-step guide, and tips and tricks to help you take your videos up a notch.\",\"breadcrumb\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/new-blog.artlist.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Social Content Creators\",\"item\":\"https:\/\/new-blog.artlist.io\/blog\/social-content-creators\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to record hands-free on TikTok\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#website\",\"url\":\"https:\/\/new-blog.artlist.io\/blog\/\",\"name\":\"Artlist Blog\",\"description\":\"Just artlist blog website\",\"publisher\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/new-blog.artlist.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#organization\",\"name\":\"Artlist Blog\",\"url\":\"https:\/\/new-blog.artlist.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/10\/artlist-blog-logo.svg\",\"contentUrl\":\"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/10\/artlist-blog-logo.svg\",\"width\":143,\"height\":28,\"caption\":\"Artlist Blog\"},\"image\":{\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/person\/b61e3347987d9f4a01f200dc2a9e8aec\",\"name\":\"Kim Wacker\",\"url\":\"https:\/\/new-blog.artlist.io\/blog\/author\/kim-wacker\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How To Make TikTok Recordings Hands-Free | Artlist Blog","description":"Learn how to make a TikTok hands-free in our step-by-step guide, and tips and tricks to help you take your videos up a notch.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/","og_locale":"en_US","og_type":"article","og_title":"How To Make TikTok Recordings Hands-Free | Artlist Blog","og_description":"Learn how to make a TikTok hands-free in our step-by-step guide, and tips and tricks to help you take your videos up a notch.","og_url":"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/","og_site_name":"Artlist Blog","article_published_time":"2023-10-18T07:56:47+00:00","article_modified_time":"2024-01-01T12:21:42+00:00","og_image":[{"width":2560,"height":717,"url":"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2023\/10\/181023-How-to-record-a-Tiktok-video-hands-free-blog-cover-2-scaled.jpg","type":"image\/jpeg"}],"author":"Kim Wacker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kim Wacker","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/#article","isPartOf":{"@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/"},"author":{"name":"Kim Wacker","@id":"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/person\/b61e3347987d9f4a01f200dc2a9e8aec"},"headline":"How to record hands-free on TikTok","datePublished":"2023-10-18T07:56:47+00:00","dateModified":"2024-01-01T12:21:42+00:00","mainEntityOfPage":{"@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/"},"wordCount":1133,"publisher":{"@id":"https:\/\/new-blog.artlist.io\/blog\/#organization"},"articleSection":["Social Content Creators"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/","url":"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/","name":"How To Make TikTok Recordings Hands-Free | Artlist Blog","isPartOf":{"@id":"https:\/\/new-blog.artlist.io\/blog\/#website"},"datePublished":"2023-10-18T07:56:47+00:00","dateModified":"2024-01-01T12:21:42+00:00","description":"Learn how to make a TikTok hands-free in our step-by-step guide, and tips and tricks to help you take your videos up a notch.","breadcrumb":{"@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/new-blog.artlist.io\/blog\/how-to-record-hands-free-on-tiktok\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/new-blog.artlist.io\/blog\/"},{"@type":"ListItem","position":2,"name":"Social Content Creators","item":"https:\/\/new-blog.artlist.io\/blog\/social-content-creators\/"},{"@type":"ListItem","position":3,"name":"How to record hands-free on TikTok"}]},{"@type":"WebSite","@id":"https:\/\/new-blog.artlist.io\/blog\/#website","url":"https:\/\/new-blog.artlist.io\/blog\/","name":"Artlist Blog","description":"Just artlist blog website","publisher":{"@id":"https:\/\/new-blog.artlist.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/new-blog.artlist.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/new-blog.artlist.io\/blog\/#organization","name":"Artlist Blog","url":"https:\/\/new-blog.artlist.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/10\/artlist-blog-logo.svg","contentUrl":"https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2024\/10\/artlist-blog-logo.svg","width":143,"height":28,"caption":"Artlist Blog"},"image":{"@id":"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/new-blog.artlist.io\/blog\/#\/schema\/person\/b61e3347987d9f4a01f200dc2a9e8aec","name":"Kim Wacker","url":"https:\/\/new-blog.artlist.io\/blog\/author\/kim-wacker\/"}]}},"uagb_featured_image_src":{"full":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2023\/10\/181023-How-to-record-a-Tiktok-video-hands-free-blog-cover-2-scaled.jpg",2560,717,false],"thumbnail":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2023\/10\/181023-How-to-record-a-Tiktok-video-hands-free-blog-cover-2-150x150.jpg",150,150,true],"medium":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2023\/10\/181023-How-to-record-a-Tiktok-video-hands-free-blog-cover-2-300x84.jpg",300,84,true],"medium_large":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2023\/10\/181023-How-to-record-a-Tiktok-video-hands-free-blog-cover-2-768x215.jpg",768,215,true],"large":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2023\/10\/181023-How-to-record-a-Tiktok-video-hands-free-blog-cover-2-1024x287.jpg",1024,287,true],"1536x1536":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2023\/10\/181023-How-to-record-a-Tiktok-video-hands-free-blog-cover-2-1536x430.jpg",1536,430,true],"2048x2048":["https:\/\/new-blog.artlist.io\/blog\/wp-content\/uploads\/2023\/10\/181023-How-to-record-a-Tiktok-video-hands-free-blog-cover-2-2048x574.jpg",2048,574,true]},"uagb_author_info":{"display_name":"Kim Wacker","author_link":"https:\/\/new-blog.artlist.io\/blog\/author\/kim-wacker\/"},"uagb_comment_info":0,"uagb_excerpt":"What is hands-free recording on TikTok? Did you know that you can record videos hands-free on TikTok? Just like it sounds, you can record videos on your phone without using your hands right from the TikTok app. This way, you can more easily make videos without having to hold down the record button the entire&hellip;","_links":{"self":[{"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/posts\/12466"}],"collection":[{"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/users\/42"}],"replies":[{"embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/comments?post=12466"}],"version-history":[{"count":5,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/posts\/12466\/revisions"}],"predecessor-version":[{"id":12473,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/posts\/12466\/revisions\/12473"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/media\/12475"}],"wp:attachment":[{"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/media?parent=12466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/categories?post=12466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/new-blog.artlist.io\/blog\/wp-json\/wp\/v2\/tags?post=12466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}