Monetag mini app create free।। Telegram monetag Miniapp create 2025।। নিজেই তৈরি করুন মনিট্যাগ App
Monetag Mini App Create Free | Telegram Monetag Mini App 2025
Want to earn passive income in 2025? Learn how to create a free Monetag Mini App and monetize your Telegram channel, blog, or any online platform using Monetag advertising. This detailed guide will show you how to build your own income-generating app from scratch—without coding skills or expensive tools.
🚀 What is a Monetag Mini App?
A Monetag Mini App is a lightweight HTML and JavaScript-based web app that integrates Monetag ads to generate CPM, CPC, and CPA income. It can be used as a Telegram Mini App, on Blogger, or any website. With Monetag, every impression or click earns you money.
💡 Why Create a Telegram Monetag Mini App?
- ✅ 100% Free to Build and Launch
- ✅ Compatible with Telegram Bots and Web Apps
- ✅ Monetize Traffic with Banner, Popunder, or Native Ads
- ✅ Works on Blogger, WordPress, or Static Hosting
- ✅ Earn from every visitor or action
📱 How to Create Your Monetag Mini App (Step-by-Step)
- Create a Monetag Account: Visit and sign up for free.
- Monetage Account create link : Click Here
- Generate Ad Codes: From your dashboard, create banner/popunder/native ad codes.
- Build a Mini App: Create a basic HTML page with your ad scripts and custom content.
- Host Your App: Upload the file to Blogger, Netlify, GitHub Pages, or any free host.
- Integrate with Telegram: Use Telegram’s Bot API or Web App API to embed or open your app inside Telegram chats.
📄 Sample Mini App Code (HTML)
<!DOCTYPE html> <html> <head> <title>Monetag App</title> </head> <body> <h1>Welcome to My Monetag Mini App</h1> <p>Start earning by sharing this app.</p> <!-- Insert Your Monetag Ads Here --> </body> </html>
📣 Where to Get Traffic for Your App?
To earn more from your app, you need consistent traffic. Here are top platforms to share and promote your Monetag Mini App:
- 📌 Telegram Groups & Channels
- 📌 Facebook Pages and Reels (Comment Section)
- 📌 YouTube Shorts or Video Descriptions
- 📌 WhatsApp & Messenger Groups
- 📌 Reddit, Quora, Twitter (X), Pinterest
- 📌 Blog Posts, Free Classified Ads
📊 Monetization Tips
- Use more than one ad format: popunder + banner + native
- Always place one ad at the top, one in the middle, one at the bottom
- Keep your app simple and mobile responsive
- Track performance from Monetag Dashboard
- Promote with trending keywords and SEO posts
🎯 Final Thoughts
Creating a Telegram Monetag Mini App in 2025 is a smart move for anyone looking to earn passive income online. Whether you're a student, freelancer, or content creator—Monetag gives you the tools to generate revenue from every visitor. Don’t wait! Start building your own Monetag Mini App today and turn traffic into dollars.
Hashtags:
#MonetagMiniApp #TelegramMonetag #EarnOnline2025 #PassiveIncome #FreeMiniApp #MonetagEarnings #HTMLAdsApp
Html code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"/>
<title>Easy Earning Bot</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<style>
:root {
--primary-color: #2ed914;
--primary-hover: #3bff21;
--secondary-color: #2a2a2e;
--background-color: #1c1c1f;
--text-color: #f0f0f0;
--text-muted-color: #a0a0a0;
--accent-color: #ff8c00;
--card-bg: #252528;
}
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
body {
margin: 0; padding: 0; background-color: var(--background-color); color: var(--text-color);
font-family: 'Segoe UI', 'Roboto', sans-serif; display: flex; justify-content: center; align-items: center;
height: 100vh; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
}
.container {
width: 100%; height: 100%; max-width: 400px; background: var(--background-color);
display: flex; flex-direction: column; overflow: hidden; position: relative;
}
main {
flex-grow: 1; overflow-y: auto; padding: 20px; padding-bottom: 80px; /* Space for footer nav */
}
.view { display: none; animation: fadeIn 0.4s ease-in-out; }
.view.active { display: block; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
.user-header-card {
background: var(--card-bg); border-radius: 16px; padding: 15px; margin-bottom: 25px;
display: flex; align-items: center; border: 1px solid rgba(255, 255, 255, 0.05);
}
.user-avatar {
width: 50px; height: 50px; border-radius: 50%; margin-right: 15px; overflow: hidden;
background: linear-gradient(135deg, var(--primary-color), #00a651);
display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 20px;
}
.user-avatar img { width: 100%; height: 100%; object-fit: cover; }
.user-info .username { font-size: 18px; font-weight: 700; margin: 0; }
.user-info .title { font-size: 14px; color: var(--text-muted-color); margin: 0; }
.balance-card {
background: linear-gradient(135deg, #00a651, #00753a); border-radius: 16px; padding: 20px;
text-align: center; margin-bottom: 25px;
}
.balance-card .label { font-size: 16px; opacity: 0.8; margin-bottom: 5px; }
.balance-card .balance-value { font-size: 36px; font-weight: 800; margin: 0; letter-spacing: 1px; }
.balance-card .points-value { font-size: 16px; font-weight: 600; color: var(--accent-color); margin-top: 10px; }
.section-title { font-size: 20px; font-weight: 700; margin-bottom: 15px; padding-left: 5px; border-left: 4px solid var(--primary-color); }
.task-card {
background: var(--card-bg); border-radius: 12px; padding: 20px; margin-bottom: 15px;
display: flex; align-items: center; cursor: pointer; transition: transform 0.2s ease, background-color 0.2s ease;
border: 1px solid rgba(255, 255, 255, 0.05);
}
.task-card:hover { transform: translateY(-3px); background-color: var(--secondary-color); }
.task-icon { font-size: 24px; color: var(--primary-color); margin-right: 20px; width: 30px; text-align: center; }
.task-details h3 { margin: 0; font-size: 16px; font-weight: 600; }
.task-details p { margin: 3px 0 0; font-size: 13px; color: var(--text-muted-color); }
.task-arrow { margin-left: auto; font-size: 18px; color: var(--text-muted-color); }
.list-item {
display: flex; align-items: center; background: var(--card-bg); padding: 12px 15px;
border-radius: 10px; margin-bottom: 10px; border: 1px solid rgba(255, 255, 255, 0.05);
}
.list-item .rank { font-size: 16px; font-weight: 700; color: var(--text-muted-color); width: 30px; }
.list-item .avatar { width: 40px; height: 40px; border-radius: 50%; background: var(--secondary-color); margin-right: 15px; object-fit: cover; }
.list-item .info { flex-grow: 1; }
.list-item .info .name { font-weight: 600; font-size: 15px; }
.list-item .info .detail { font-size: 13px; color: var(--text-muted-color); }
.list-item .score { font-size: 16px; font-weight: 700; color: var(--accent-color); }
.history-icon { color: var(--primary-color); margin-right: 15px; font-size: 18px; }
.footer-nav {
position: fixed; bottom: 0; left: 0; right: 0; width: 100%; max-width: 400px; margin: 0 auto;
display: flex; justify-content: space-around; background: var(--secondary-color);
padding: 10px 0; border-top: 1px solid rgba(255, 255, 255, 0.1);
}
.nav-button {
display: flex; flex-direction: column; align-items: center; color: var(--text-muted-color);
background: none; border: none; font-size: 12px; transition: color 0.2s ease, transform 0.2s ease;
cursor: pointer; padding: 5px 10px;
}
.nav-button .icon { font-size: 22px; margin-bottom: 4px; }
.nav-button:hover { color: var(--text-color); }
.nav-button.active { color: var(--primary-color); transform: scale(1.1); }
.action-button {
width: 100%; padding: 15px; border-radius: 12px; border: none; font-size: 16px; font-weight: 700;
margin-top: 15px; cursor: pointer; transition: all 0.3s ease; text-transform: uppercase; letter-spacing: 1px;
}
.primary-button { background: var(--primary-color); color: #000; }
.primary-button:hover { background: var(--primary-hover); transform: translateY(-2px); box-shadow: 0 5px 15px rgba(46, 217, 20, 0.3); }
.secondary-button { background: var(--secondary-color); color: var(--primary-color); }
.secondary-button:hover { background: #3a3a3e; }
.modal-overlay {
position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7);
display: none; align-items: center; justify-content: center; z-index: 1000; animation: fadeIn 0.3s;
}
.modal-overlay.active { display: flex; }
.modal-content {
background: var(--card-bg); padding: 25px; border-radius: 16px; width: 90%; max-width: 320px;
text-align: center; animation: slideIn 0.3s;
}
@keyframes slideIn { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
.modal-content h3 { margin-top: 0; font-size: 20px; }
.modal-content p { color: var(--text-muted-color); margin-bottom: 25px; }
.modal-actions { display: flex; gap: 10px; }
</style>
<script src='//libtl.com/sdk.js' data-zone='9459352' data-sdk='show_9459352'></script>
<script src="https://telegram.org/js/telegram-web-app.js"></script>
</head>
<body>
<div class="container">
<main id="main-content">
<!-- HOME VIEW -->
<div id="home-view" class="view active">
<div class="user-header-card">
<div class="user-avatar" id="profile-pic">EE</div>
<div class="user-info">
<h2 class="username" id="username">Loading...</h2>
<p class="title">Welcome Back!</p>
</div>
</div>
<div class="balance-card">
<p class="label">Total Balance</p>
<h1 class="balance-value" id="balance-value">$0.00</h1>
<p class="points-value"><i class="fa-solid fa-coins"></i> <span id="points-value">0</span> Points</p>
</div>
<h2 class="section-title">Quick Actions</h2>
<div class="task-card" onclick="showView('tasks-view')">
<div class="task-icon"><i class="fa-solid fa-list-check"></i></div>
<div class="task-details"><h3>View Tasks</h3><p>Watch ads and complete tasks to earn points.</p></div>
<div class="task-arrow"><i class="fa-solid fa-chevron-right"></i></div>
</div>
<div class="task-card" onclick="openWithdrawModal()">
<div class="task-icon"><i class="fa-solid fa-wallet"></i></div>
<div class="task-details"><h3>Withdraw Funds</h3><p>Request to withdraw your available balance.</p></div>
<div class="task-arrow"><i class="fa-solid fa-chevron-right"></i></div>
</div>
</div>
<!-- TASKS VIEW -->
<div id="tasks-view" class="view">
<h2 class="section-title">Earning Tasks</h2>
<div class="task-card" onclick="showRewardedInterstitial()">
<div class="task-icon"><i class="fa-solid fa-rectangle-ad"></i></div>
<div class="task-details"><h3>Rewarded Interstitial</h3><p>Watch a full-screen ad to earn rewards.</p></div>
<div class="task-arrow"><i class="fa-solid fa-play"></i></div>
</div>
<div class="task-card" onclick="showRewardedPopup()">
<div class="task-icon"><i class="fa-solid fa-window-restore"></i></div>
<div class="task-details"><h3>Rewarded Popup</h3><p>View a popup ad for quick points.</p></div>
<div class="task-arrow"><i class="fa-solid fa-play"></i></div>
</div>
<!-- In-App Interstitial Button Removed as it now runs automatically -->
</div>
<!-- LEADERBOARD VIEW -->
<div id="leaderboard-view" class="view">
<h2 class="section-title">Top Earners</h2>
<div id="leaderboard-list"><!-- Leaderboard items will be generated here by JS --></div>
</div>
<!-- HISTORY VIEW -->
<div id="history-view" class="view">
<h2 class="section-title">Recent Activity</h2>
<div id="history-list"><!-- History items will be generated here by JS --></div>
</div>
</main>
<nav class="footer-nav">
<button class="nav-button active" onclick="showView('home-view')"><i class="icon fa-solid fa-house"></i>Home</button>
<button class="nav-button" onclick="showView('tasks-view')"><i class="icon fa-solid fa-list-check"></i>Tasks</button>
<button class="nav-button" onclick="showView('leaderboard-view')"><i class="icon fa-solid fa-trophy"></i>Leaders</button>
<button class="nav-button" onclick="showView('history-view')"><i class="icon fa-solid fa-clock-rotate-left"></i>History</button>
<button class="nav-button" onclick="shareApp()"><i class="icon fa-solid fa-share-nodes"></i>Share</button>
</nav>
</div>
<!-- WITHDRAWAL MODAL -->
<div class="modal-overlay" id="withdraw-modal">
<div class="modal-content">
<h3>Confirm Withdrawal</h3>
<p>You are about to request a withdrawal of your entire balance. Please confirm.</p>
<div class="modal-actions">
<button class="action-button secondary-button" onclick="closeWithdrawModal()">Cancel</button>
<button class="action-button primary-button" onclick="requestWithdraw()">Confirm</button>
</div>
</div>
</div>
<script>
// --- State Variables ---
let points = 0;
let balance = 0.00;
let historyLog = [];
let tgUser = null;
const pointsPerAd = 1;
const ratePerPoint = 0.05;
// --- Core App Logic ---
document.addEventListener('DOMContentLoaded', () => {
initApp();
});
function initApp() {
if (window.Telegram && Telegram.WebApp) {
Telegram.WebApp.ready();
Telegram.WebApp.expand();
tgUser = Telegram.WebApp.initDataUnsafe.user;
}
loadData();
loadTelegramUser();
showView('home-view');
renderLeaderboard();
// <<< === ADDED AUTOMATIC IN-APP ADS INITIALIZATION HERE === >>>
initializeInAppAds();
}
// --- Initialize Automatic Ads ---
function initializeInAppAds() {
if (typeof show_9459352 === 'function') {
// In-App Interstitial - runs automatically in the background
show_9459352({
type: 'inApp',
inAppSettings: {
frequency: 2,
capping: 0.1,
interval: 30,
timeout: 5,
everyPage: false // `false` is important for single-page apps like this
}
});
console.log("Automatic In-App Interstitial Ads Initialized.");
} else {
console.warn("Monetag SDK not ready for In-App Ads. Retrying...");
setTimeout(initializeInAppAds, 2000); // Retry after 2 seconds if SDK is not loaded yet
}
}
// --- View Management ---
function showView(viewId) {
document.querySelectorAll('.view').forEach(view => view.classList.remove('active'));
document.getElementById(viewId).classList.add('active');
document.querySelectorAll('.nav-button').forEach(btn => btn.classList.remove('active'));
const activeBtn = document.querySelector(`.nav-button[onclick="showView('${viewId}')"]`);
if(activeBtn) activeBtn.classList.add('active');
if (viewId === 'history-view') renderHistory();
}
// --- Data Persistence ---
function loadData() {
const savedData = localStorage.getItem('easyEarningBotV2');
if (savedData) {
const data = JSON.parse(savedData);
points = data.points || 0;
balance = data.balance || 0.00;
historyLog = data.historyLog || [];
}
updateDisplay();
}
function saveData() {
localStorage.setItem('easyEarningBotV2', JSON.stringify({ points, balance, historyLog }));
}
function updateDisplay() {
document.getElementById('points-value').textContent = points;
document.getElementById('balance-value').textContent = `$${balance.toFixed(2)}`;
}
// --- User & Profile ---
function loadTelegramUser() {
if (tgUser) {
document.getElementById('username').textContent = tgUser.first_name || 'Telegram User';
const profilePicDiv = document.getElementById('profile-pic');
if (tgUser.photo_url) {
profilePicDiv.innerHTML = `<img src="${tgUser.photo_url}" alt="P">`;
} else {
profilePicDiv.textContent = (tgUser.first_name || 'U').charAt(0);
}
}
}
// --- History Logic ---
function addToHistory(type, detail) {
const timestamp = new Date().toISOString();
historyLog.unshift({ type, detail, timestamp });
if (historyLog.length > 50) historyLog.pop();
saveData();
}
function renderHistory() {
const list = document.getElementById('history-list');
if (historyLog.length === 0) {
list.innerHTML = `<div class="list-item"><div class="info"><div class="name">No activity yet.</div><div class="detail">Watch some ads to get started!</div></div></div>`;
return;
}
list.innerHTML = historyLog.map(item => {
const icon = item.type === 'earn'
? '<i class="fa-solid fa-plus-circle" style="color: var(--primary-color);"></i>'
: '<i class="fa-solid fa-paper-plane" style="color: var(--accent-color);"></i>';
return `
<div class="list-item">
<div class="history-icon">${icon}</div>
<div class="info">
<div class="name">${item.detail}</div>
<div class="detail">${new Date(item.timestamp).toLocaleString()}</div>
</div>
</div>`;
}).join('');
}
// --- Leaderboard Logic ---
function renderLeaderboard() {
const leaderboardData = [
{ name: "CryptoKing", score: 2540, avatar: "https://i.pravatar.cc/150?img=1" },
{ name: "Elena", score: 2210, avatar: "https://i.pravatar.cc/150?img=2" },
{ name: "ProMiner", score: 1980, avatar: "https://i.pravatar.cc/150?img=3" },
{ name: "Aisha", score: 1750, avatar: "https://i.pravatar.cc/150?img=4" },
{ name: "BotMaster", score: 1530, avatar: "https://i.pravatar.cc/150?img=5" },
];
document.getElementById('leaderboard-list').innerHTML = leaderboardData.map((user, index) => `
<div class="list-item">
<div class="rank">#${index + 1}</div>
<img src="${user.avatar}" class="avatar" alt="Avatar">
<div class="info"><div class="name">${user.name}</div></div>
<div class="score">${user.score} pts</div>
</div>
`).join('');
}
// --- Earning Functions ---
function grantReward() {
points += pointsPerAd;
balance = points * ratePerPoint;
updateDisplay();
addToHistory('earn', `+${pointsPerAd} Point(s) from Ad`);
saveData();
Telegram.WebApp.HapticFeedback.notificationOccurred('success');
alert(`Congratulations! You've earned +${pointsPerAd} point. Your new balance is $${balance.toFixed(2)}.`);
}
function showRewardedInterstitial() {
if (typeof show_9459352 !== 'function') return alert('Ad provider is not ready.');
show_9459352().then(grantReward).catch(e => alert('Ad could not be shown.'));
}
function showRewardedPopup() {
if (typeof show_9459352 !== 'function') return alert('Ad provider is not ready.');
show_9459352('pop').then(grantReward).catch(e => alert('Ad could not be shown.'));
}
// --- Withdrawal Logic ---
function openWithdrawModal() {
if (balance < 5) {
Telegram.WebApp.HapticFeedback.notificationOccurred('error');
return alert("Minimum withdrawal amount is $5.00. Keep earning!");
}
document.getElementById('withdraw-modal').classList.add('active');
}
function closeWithdrawModal() {
document.getElementById('withdraw-modal').classList.remove('active');
}
function requestWithdraw() {
closeWithdrawModal();
const botToken = '7201062892:AAGewLnDhE6l7buTuXAIScVhI4d-XJZZ5Hs';
const adminUserId = '6357701459';
const userInfo = tgUser ? `@${tgUser.username} (ID: ${tgUser.id})` : 'Unknown User';
const message = `💸 *Withdrawal Request*\n\n👤 *User:* ${userInfo}\n💰 *Amount:* $${balance.toFixed(2)}\n\n_Please process this request._`;
fetch(`https://api.telegram.org/bot${botToken}/sendMessage`, {
method: "POST",
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ chat_id: adminUserId, text: message, parse_mode: "Markdown" })
}).then(res => res.json())
.then(data => {
if (data.ok) {
Telegram.WebApp.HapticFeedback.notificationOccurred('success');
alert("Your withdrawal request has been sent successfully!");
addToHistory('withdraw', `Request for $${balance.toFixed(2)}`);
} else {
Telegram.WebApp.HapticFeedback.notificationOccurred('error');
alert("Failed to send request. Please try again later.");
}
}).catch(err => {
Telegram.WebApp.HapticFeedback.notificationOccurred('error');
alert("An error occurred. Check your connection and try again.");
});
}
// --- Share & Referral ---
function shareApp() {
if (!tgUser) return alert("Could not get user data from Telegram.");
const botUsername = "Easyearing99_bot";
const referralLink = `https://t.me/${botUsername}?start=${tgUser.id}`;
const text = `🎉 Join this amazing bot and start earning! Use my link to get a special bonus:`;
const shareUrl = `https://t.me/share/url?url=${encodeURIComponent(referralLink)}&text=${encodeURIComponent(text)}`;
Telegram.WebApp.openTelegramLink(shareUrl);
}
</script>
</body>
</html>

Post a Comment